파이썬/파이썬(python) 중급

[32-1 파이썬] 구글 SMTP 포트

Olivia-BlackCherry 2022. 9. 25. 10:37

SMTP란?

Simple Mail Transfer Protocol

보내는 사람이 이메일을 전송버튼을 누르면

보내는 사람의 e-mail 서버가 이메일을 받아

인터넷으로 받는 사람의 e-mail 서버로 전송해

받는 사람이 이메일을 열어보는

모든 과정의 규칙을 이야기한다. 

 

 

1. SMTP 주소

smtp주소는 아래와 같다.

구글 계정이 보안상의 이유로 아이디와 비밀번호만으로 자동 로그인이 불가하므로,

오늘은 네이버로 파이썬을 이용한 이메일 보내기를 해보겠다.

daum smtp.daum.net  
naver smtp.naver.com port =587
Gmail smtp.gmail.com 보안상 이유로 X
Hotmail smtp.live.com  
Outlook outlook.office365.com  
Yahoo smtp.mail.yahoo.com  

 

 

2. Naver 보안설정 바꾸기

1) 네이버> 메일환경> POP 3/IMAP 설정> POP3/SMTP사용함으로 설정

2) 네이버ID>보안설정>기본보안설정>2단계 인증>해제

만약 2단계 인증이 되어 있다면 해제한다.

 

 

3. 파이썬 라이브러리 smtplib

1) smtplit.SMTP(smtp주소, port)

smtp주소: smtp.naver.com

port : 587

import smtplib
connection = smtplib.SMTP("smtp.naver.com", port=587)

 

2) starttls()

TLS?

Transport Layer Security

이메일 서버와의 연결을 안전하게 만드는 것으로,

이메일 전송 과정에서 정보가 누출되지 않도록

메시지를 암호화하는 것을 말한다.

connection.starttls()

 

3) login(user=?, password=?)

내 계정에 로그인한다.

email_add = "OliviaCodingSchool@naver.com"
password = "1234"
connection.login(user=email_add, password=password)

 

4) MIMEText

메일 본문을 쓴다.

MIMEtext(내용)
from: 보내는 사람
to: 받는 사람
subject: 제목
from email.mime.text import MIMEText

msg = MIMEText('내용: 본문 테스트 메시지\n한 줄 띄기\n도 됩니다')
msg['From'] = "OliviaCodingSchool@naver.com"
msg['Subject'] = '제목: 메일 발송 시험'
msg['To'] = "oliviacodingschool@gmail.com"

 

 

4) sendemail(from_addr=?, to_addr=?, msg=?)

보내는 사람과 받는 사람의 이메일 주소를 적는다.

 

 

5) as_string()

MIMEtext 대상을 str(문자열)로 바꾼다.

connection.sendmail(from_addr="Olivia@naver.com", 
                    to_addrs="oliviacodingschool@gmail.com", 
                    msg=msg.as_string())

 

 

5) close()

모두 완료했다면 파일을 닫는다.

 

 

6) with 키워드

with 키워드를 사용하여, 모두 완료했다면 자동으로 파일을 닫는다.

import smtplib
from email.mime.text import MIMEText

email_add = "Olivia@naver.com"
password = "1234"

with smtplib.SMTP("smtp.naver.com", port=587) as connection:
    connection.starttls()
    connection.login(user="Olivia", password='1234')
    msg = MIMEText('내용:본문 테스트 메시지\nhi!\nhello!')
    msg['From'] = "rufreedom@naver.com"
    msg['Subject'] = '제목: 메일 발송 시험'
    msg['To'] = "oliviacodingschool@gmail.com"

    connection.sendmail(from_addr="Olivia@naver.com",
                        to_addrs="odingschool@gmail.com",
                        msg=msg.as_string())

 

 

참고사항

* 구글은 보안을 아래와 같이 완화해도 smtp 기능을 사용할 수 없다.

 

 

구글은 사용자 이름, 비밀번호만 사용하여 구글 계정에 로그인하도록 요청하는 기능을 더이상 지원하지 않기로했기 때문이다.

 

따라서, 

보내는 주소는 구글이 아닌 네이버, 다음을 이용하면 된다!

받는 사람의 주소는 어떤 계정이든 상관없다.