SMTP (Simple Mail Transfer Protocol)
- TCP 25번 포트 사용
- SMTP는 연결 지향 텍스트 기반의 프로토콜
- 요구/응답 메시지뿐 아니라 모든 문자가 7bit ASCII로 되어있어야 한다고 규정되어 있음
※ <CR><LF> 란?
: 타자기에서 유래된 말로 각 단어는 아래와 같은 의미를 지님
- CR(Carriage Return) : 현재 커서를 줄 올림 없이 맨 앞으로 이동, 아스키코드로는 0x0D
- LF(Line Feed) : 커서는 그 자리에 그대로 둔 상황에서 종이만 한 줄 올려 줄을 바꿈, 아스키코드로는 0x0A
SMTP 통신 예시 [1]
SMTP 기본 명령어 모음 [4]
IMAP (Internet Messaging Access Protocol)
- TCP 143번 포트 사용
- 원격 서버로부터 TCP/IP 연결을 통해 이메일을 가져오는데 사용
- 온라인 모드와 오프라인 모드를 모두 지원
- POP3를 사용할 때와 달리 이메일 메시지를 서버에 남겨 두었다가 나중에 지울 수 있음
- 서버 트래픽이 많이 쓰임
SMTP 와 IMAP [6]
POP (Post Office Protocol)
- TCP 110번 포트 사용
- 보통 POP 라는 명칭은 POP3 프로토콜을 의미함
- POP는 원격 서버에 접속하여 이메일을 가져온 후, 서버에서 이메일을 삭제함
- 구현이 쉽고, 많은 클라이언트에서 지원함
IMAP 과 POP 프로토콜의 차이점 [7]
NodeMailer
NodeMailer 란?
: Node.js 환경에서 Email 전송을 할 수 있도록 도와주는 모듈, 이메일 전송에 많이 사용됨
사전 준비
- 모듈 설치
$ npm i nodemailer
- 가상 메일 서버
: Mailtrap 을 활용하여 진행될 예정이며 아래와 같이 준비가 필요함
1) Mailtrap.io 에 회원가입
2) "Inboxes" 에서 "My Inbox" 링크 클릭 (없다면 Add Inbox 버튼을 눌러 새로 생성)
3) Mailtrap.io 의 API 사용 시 필요한 인증 정보 확인, "Show Credentials" 클릭
4) 테스트 이메일 정보를 확인하기 위해 "Email Address" 탭 클릭
5) 테스트 이메일 정보 확인
예제코드
- example.js
"use strict";
const nodemailer = require("nodemailer");
const testAccount = {
"host" : "smtp.mailtrap.io",
"port" : 25, // Show Credential 에서 확인한 지원되는 포트 중 하나
"secure" : false, // TLS 를 사용하지 않으면 false, 아니면 true
"auth" : {
"user" : "a38a38f9be0733", // Show Credential 에서 확인한 Username
"pass" : "f6d05f32112128", // Show Credential 에서 확인한 Password
}
}
const send = async (data) => {
nodemailer.createTransport(testAccount).sendMail(data, function(err, info){
if(err){
console.log(err);
}else {
console.log(info);
return info.response;
}
});
}
const content = {
from : "mightyotter@tistory.com",
to : "8a87e08ea4-2275bd@inbox.mailtrap.io", // mailtrap.io 의 Email Address 부분
subject : "BBM - 노력은 배신하지 않는다",
text : "성공에는 간단한 공식이 있다. 무엇이건 최선을 다해라. 모두들 그것을 좋아할 것이다.",
html : "<h2> 7번 넘어져도 8번 일어나라 </h2>"
}
send(content);
# Reference
[1] Wikipedia, 간이 전자 우편 전송 프로토콜(Simple Mail Transfer Protocol, SMTP)
URL : https://ko.wikipedia.org/wiki/간이_우편_전송_프로토콜
[2] Wikipedia, 인터넷 메시지 접속 프로토콜(Internet Message Access Protocol, IMAP)
URL : https://ko.wikipedia.org/wiki/인터넷_메시지_접속_프로토콜
[3] Wikipedia, 포스트 오피스 프로토콜(Post Office Protocol, POP)
URL : https://ko.wikipedia.org/wiki/
[4] Tistory, SMTP Basic commands
URL : https://cheershennah.tistory.com/133
[5] Tistory, SMTP POP3 IMAP 이란?
URL : https://sambalim.tistory.com/60
[6] Naver, SMTP, POP3, IMAP 차이
URL : https://m.blog.naver.com/ijoos/221742035684
[7] Google, TCP/IP-Windows
[8] Velog, Node.js에서 메일 전송하기 (feat. Nodemailer & Gmail)
URL : https://velog.io/@josworks27/Back-end-Node.js에서-메일-전송하기-feat.-Nodemailer-Gmail
[9] Velog, NodeJS-nodemailer-모듈을-이용한-Gmail-API-사용-hhjwgcmhsh
URL : https://velog.io/@npcode9194/NodeJS-nodemailer-모듈을-이용한-Gmail-API-사용-hhjwgcmhsh
[10] Youtube, 개발자의품격 - Node.js - 이메일 보내기 기능 구현하기 (Nodemailer)
URL : https://www.youtube.com/watch?v=ezReImKeq2U
'Programming > JS & TS' 카테고리의 다른 글
[Back-End] Node.js 를 효율적으로 사용하는 법은? (무중단, 병렬처리) (0) | 2022.01.06 |
---|---|
[Back-End] Web 운영을 위한 로그 관리 (0) | 2022.01.05 |
[Javascript] '...' (Triple dots) 문법이란 (0) | 2021.12.23 |
[Javascript] for 문 숙달을 위한 연습문제 - 별찍기 (0) | 2021.12.14 |
[JavaScript] 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy) (1) | 2021.12.10 |
댓글