카테고리 없음

node.js 공부하기) nodemailer

DevOhwa 2022. 10. 8. 14:55
반응형

이메일 작동방법

노드서버 → 유저.

node.js와 express.js는 언어 또는 프레임워크라서 서버측 논리를 구현하는데 사용되지만 node.js로는 메일서버를 간단하게 만들 수 없다. 메일을 처리하는것은 들어오는 요청과 응답을 처리하는것과는 완전히 다르다. 

따라서 스스로 메일서버를 구축할일은 딱히 없다. 현실적으로 제3자 메일 서버를 활용하게 된다.  대부분의 회사들도 메일서버를 갖추고 있지 않고, aws등의 제3자 서비스를 통해서 메일을 발송한다.

 

 

SendGrid 사용하기

sendgrid.com은 하루에 100개이하로 발송하면 무료로 사용가능한 회원등급이 있다. Mailchimp, AWS, SCS 등의 많은 대체서비스가 있으니 찾아보면 된다. 대부분의 키워드는 nodemailing으로 찾으면 쉽다.

 

가입하고나면 패키지를 깔아준다. 두번째 패키지는 sendgrid와의 상호작용을위해 깔아준 패키지이다.

npm install --save nodemailer
npm install --save nodemailer-sendgrid-transport

 

 

 

Nodemailer 사용해서 메일보내기

패키지와 상호작용할 파일로간다.(ex. auth.js) 그리고 nodemailer를 임포트해준다. 상수이름은 원하는 대로 해주면된다.

const nodemailer = require('nodemailer');
const sendgridTransport = require('nodemailer-sendgrid-transport');

 

그리고 몇가지를 초기화 해준다. 이메일을 어떻게 전달할지 nodemailer에 알려주는 설정이다. node.js가 스스로 하지 못하는 부분이므로 제 3자 서비스를 이용하는것이다.

const transporter = nodemiler.createTransport();

createTransport에서는 sendgridTransport를 입력해서 이를 함수로 실행할 수 있다. 그 함수는 nodemailer가 sendgrid를 사용하는데 활용가능한 환경 설정값을 주게 된다.

 

sendgridTransport 함수에 auth 객체를 입력한다. 그리고auth역시 객체를 포함하는데 api_user와 api_key필드에 입력을 해주어야한다. 두 값은 모두 SendGrid계정에서 확인 가능하다. (SendGrid계정 → settings → API keys → 우측상단에 Create API Key:키생성, 원하는 이름으로 만들면 된다. → Full Access 선택 후 생성.)

const transporter = nodemiler.createTransport({
	auth: {
    	api_user: ,
        api_key: 
    }
});

여기까지 transtporter의 설정이 끝이났다. 이메일 발송에 사용할 수 있다. 

 

참고)

transporter.sendMail()을 사용할텐데 sendMail은 프로미스를 주기 때문에 then 과 catch가 사용가능하다. 

더 자세히 알아보고 싶다면 SendGrid의 공식 참고자료와 nodemailer참고자료를 읽어보면된다.