[Go] Google Gmail SMTP 설정 방법 및 메일 전송
2021. 9. 15. 10:51ㆍProgramming Language/Go
반응형
■ SMTP
간이 우편 전송 프로토콜(Simple Mail Transfer Protocol)의 약자. 이메일 전송에 사용되는 네트워크 프로토콜이다.
인터넷에서 메일 전송에 사용되는 표준이다. 1982년 RFC821에서 표준화되어 현재는 RFC5321에서 정의된 ESMTP(Extended SMTP; 확장 SMTP)로 2008년 갱신되었다. SMTP는 보안과 호환성의 문제로 그대로는 사용하지 않는 경우가 많다. 일반적으로 쓰이는 확장 프로그램은 SMTP-AUTH(송신자 인증 서비스), ESMTP(SASL을 이용한 보안 연결), MIME(non-ascii 데이터 전송 포맷)가 있다.
SMTP는 25/tcp와 587/tcp 포트를 사용하며 SMPTS는 465/tcp 포트를 사용한다.
출처 : 나무위키
■ Google Gmail SMTP 설정 방법
1. Gmail 설정 화면으로 이동
- 설정(톱니바퀴 모양) 버튼 클릭
- 모든 설정 보기 버튼 클릭
2. IMAP 엑세스 상태를 [IMAP 사용] 으로 수정
- [전달 및 POP/IMAP] 탭으로 이동
- IMAP 엑세스 상태를 [IMAP 사용] 으로 수정
- 변경사항 저장 버튼 클릭
3. Google 계정 보안 설정 화면으로 이동
- Google 계정 관리 화면으로 이동
- [보안] 탭으로 이동
4. Google에 로그인 [2단계 인증] 사용
- [2단계 인증] 클릭
- [시작하기] 버튼 클릭
- 사용자의 전화번호 입력
- 코드를 받을 방식 선택
- [다음] 버튼 클릭
- 인증코드 입력
- [다음] 버튼 클릭
- [사용] 버튼 클릭
5. Google에 로그인에 추가된 [앱 비밀번호] 생성
- Google에 로그인 [앱 비밀번호] 클릭
- 앱 선택에서 [기타(맞춤 이름)] 선택
- 기기 이름을 사용자에 맞게 작성(*필자의 경우 GMAIL-SMTP)
- [생성] 버튼 클릭
- 자동 발급된 기기용 앱 비밀번호를 확인(* 비밀번호는 메일 발송시 필요하기 때문에 저장해둔다)
- [확인] 버튼 클릭
■ GO 언어에서 SMTP를 활용하여 메일 발송
- 1 : 앱 비밀번호를 생성한 사용자의 이메일 주소
- 2 : 앱 비밀번호
- 3 : smtp.gmail.com [고정 값]
- 4 : 발신자 주소
- 5 : 수신자 주소 [복수 입력 가능]
- 6 : 메일의 제목
- 7 : 메일의 형식을 지정할 수 있다. 예시로 html 본문을 발송하기 위해서 [Content-Type: text/html;\n] 로 설정하면 된다.
- 8 : 메일의 본문
- 9 : smtp.gmail.com:587 [고정 값]
소스 코드
func SendMail() {
auth := smtp.PlainAuth("", "hyenmin@gmail.com", "fsdajklfdslak", "smtp.gmail.com")
from := "hyenmin@gmail.com"
to := []string{"hyenmin@gmail.com"} // 복수 수신자 가능
// 메시지 작성
headerSubject := "Subject: [제목] 메일 테스트 발송\r\n"
headerBlank := "\r\n"
body := "[본문] 메일 테스트 발송"
msg := []byte(headerSubject + headerBlank + body)
// 메일 보내기
err := smtp.SendMail("smtp.gmail.com:587", auth, from, to, msg)
if err != nil {
log.Fatalln("Error")
return
}
log.Fatalln("Success")
}
반응형
'Programming Language > Go' 카테고리의 다른 글
[Go] 로그 파일로 로그 관리 (0) | 2021.10.19 |
---|---|
[Go] get 명령어 정리 (0) | 2021.04.14 |
[Go] Go 언어 함수(func) & 메소드(Method) 정리 (0) | 2021.01.18 |
[Go] Go 언어 구조체(Struct) 정리 (0) | 2021.01.17 |
[Go] Go 언어 맵(Map) 정리 (0) | 2021.01.16 |