가장 많이 사용되고 있는 메일링 관련 모듈
다른 모듈에 의존성이 없는 독립된 모듈
유니코드를 지원 한국어도 가능
파일 첨부 기능을 지원
일반 텍스트 뿐만 아니라 HTML을 본문 내용에 사용 가능
TLS/STARTTLS를 사용해서 안전한 이메일 전송을 지원
Oauth2 인증 지원
SMTP 연결을 위해 프록시 사용 가능
모듈 설치
npm install nodemailer
nodemailer에서는 이메일 전송을 위해서 transporter 객체가 필요합니다. transporter 객체는 createTransport() 함수를 통해 생성됩니다.
const transporter = nodemailer.createTransport(transport[, defaults])
transport : nodemailer에서 SMTP transport를 사용하고, SMTP 서버 연결 정보를 정의합니다. SMTP transport외에 Sendmail transport, SES transport등이 있습니다.
defaults : 이메일 전송시 공통 옵션을 정의합니다. 모든 이메일 메시지의 보내는 사람 주소가 같다면 여기서 정의해서 사용할수있씁니다.
SMTP
인터넷에서 이메일을 보내기위해서 이용되는 프로토콜입니다. 송수신하는 서버를 SMTP 서버라고 합니다.
const transport = nodemailer.createTransport({
host: "smtp.exapmel.com", // smtp 서버 호스트주소
port: 587, //포트번호
secure: false, // true일 경우 smtp서버 접속시 TLS 사용
auth: {
user : "username", //사용자 계정
password : "password", //패스워드
}
})
설정한 SMTP 접속 정보로 정상적 접속이 이루어지는 verify()를 통해 확인할 수 있습니다.
transporter.verify((err, success) => {
if (err) {
}
})
transport 객체가 생성되면 sendMail 내장 함수를 사용해서 이메일 전송할 수 있습니다.
transporter.sendMail(data, callback)
data : 이메일 메시지 전송을 위한 설정
- from : 보내는 사람의 이메일 주소
callback(err, info) : 이메일 메시지 전송 혹은 전송 실패시 호출되는 콜백 함수
mailtrap을 이용한 가짜 smtp 서버 만들어야합니다.
정상적으로 넘어옴을 볼 수 있습니다.