[Node.js] mailing

Vorhandenheit ·2022년 8월 27일
0

JS/Node 

목록 보기
54/63

Mailing Service

(1) Nodemailer

가장 많이 사용되고 있는 메일링 관련 모듈

  • 다른 모듈에 의존성이 없는 독립된 모듈

  • 유니코드를 지원 한국어도 가능

  • 파일 첨부 기능을 지원

  • 일반 텍스트 뿐만 아니라 HTML을 본문 내용에 사용 가능

  • TLS/STARTTLS를 사용해서 안전한 이메일 전송을 지원

  • Oauth2 인증 지원

  • SMTP 연결을 위해 프록시 사용 가능

  • 모듈 설치

npm install nodemailer

(2) SMTP transport

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", //패스워드
    }
})
  • host : SMTP 서버 호스트주소
  • port : 포트번호
  • secure : SMTP 서버 접속시 TLS 사용 여부
  • auth : SMTP 서버 사용자 계정 정보

설정한 SMTP 접속 정보로 정상적 접속이 이루어지는 verify()를 통해 확인할 수 있습니다.

transporter.verify((err, success) => {
	if (err) {
    
    }
})

(3) 이메일 보내기

transport 객체가 생성되면 sendMail 내장 함수를 사용해서 이메일 전송할 수 있습니다.

transporter.sendMail(data, callback)
  • data : 이메일 메시지 전송을 위한 설정
    - from : 보내는 사람의 이메일 주소

    • to : 받는 사람의 이메일 주소
    • cc: 참조 이메일 주소
    • bcc: 숨은 참조 이메일 주소
    • subject : 이메일 제목
    • text : 이메일 본문 내용을 일반 텍스트로 작성
    • html : 이메일 본문 내용을 html 문서로 작성
    • attachments :첨부 파일
  • callback(err, info) : 이메일 메시지 전송 혹은 전송 실패시 호출되는 콜백 함수

(4) Gmail을 이용해서 이메일 보내기

mailtrap을 이용한 가짜 smtp 서버 만들어야합니다.

  • module 작성
  • 결과

정상적으로 넘어옴을 볼 수 있습니다.

profile
읽고 기록하고 고민하고 사용하고 개발하자!

0개의 댓글