본문 바로가기
프로그래밍/Python

[Python]파이썬으로 네이버 메일 보내기

by 쿼카퀀트 2021. 8. 23.
728x90

오늘은 파이썬으로 메일 보내는 방법을 알아보겠습니다.

 

기본 파이썬 패키지를 사용하기 때문에, 엄청나게 간단합니다. 이메일 보내는 기능은 뭔가 서버랑 통신해야할 것 같고~ 꾸미기도 어려울 것 같고~ (꾸미기는 어려운 것 같습니다. 제가 미술 실력이 부족해서) 하는 느낌적인 느낌이 들지만, 이렇게 쉬운거였어? 생각이 들 정도로 금방 끝나니, 잘 따라해보세요.

 

참고로, 이미지 첨부나 html 다루기 등은 다음에 따로 다루고, 이 포스트에선 딱 메일을 어떻게 보내요? 라는 질문에 대한 대답만 하겠습니다.

 

1. 먼저, 필요한 패키지를 import합니다.

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication

smtplib은 메일을 보내는 패키지이고, MIME~ 으로 된 것들은 이 메일의 컨텐츠 구성을 돕는 패키지입니다.

 

2. 다음으로, 메일 수신자, 발신자를 지정해줍니다.

또, 메일 컨텐츠의 몸통 역할을 하는 MIMEMultipart를 만들어, 제목, 수신자, 발신자를 연결합니다.

recipients = ["수신자1@gmail.com","수신자2@naver.com"]

message = MIMEMultipart();
message['Subject'] = '메일 전송 테스트'
message['From'] = "메일 발신자가 될 네이버 메일주소(주소@naver.com)"
message['To'] = ",".join(recipients)

 

 

3. 메일 컨텐츠를 입력합니다.

이 포스트에서는 단순한 html 텍스트만 보내보겠습니다.

content = """
    <html>
    <body>
        <h2>{title}</h2>
        <p>메일 전송 테스트입니다</p>
    </body>
    </html>
""".format(
title = '메일.. 받으셨나요..?'
)

mimetext = MIMEText(content,'html')
message.attach(mimetext)

content는 html문서 형식으로 만들었고, MIMEText를 만들어 이 html문서를 읽혀줍니다.

만든 MIMEText는 몸통인 MIMEMultipart에 attach 해줍니다.

 

4. SMTP를 사용해 메일을 보냅니다.

네이버 id에는, 본인의 네이버 메일주소가 yourid@naver.com 라면, yourid 까지만 입력해주면 됩니다.

email_id = '네이버 id'
email_pw = '네이버 비밀번호'

server = smtplib.SMTP('smtp.naver.com',587)
server.ehlo()
server.starttls()
server.login(email_id,email_pw)
server.sendmail(message['From'],recipients,message.as_string())
server.quit()

server.sendmail() 을 지나면서, 메일이 발송됩니다.

 

발송이 성공적이라면, 이렇게 수신자에게 메일이 도착해있는걸 확인할 수 있습니다. (noname 첨부파일은 저 혼자 이것저것 테스트하다가 잘못 붙여넣은겁니다. 이 포스팅 코드대로 제대로 실행했다면 첨부파일이 없이 도착한게 정상입니다!)

 

전체 코드는 아래와 같습니다.

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.application import MIMEApplication

recipients = ["수신자1@gmail.com","수신자2@naver.com"]

message = MIMEMultipart();
message['Subject'] = '메일 전송 테스트'
message['From'] = "메일 발신자가 될 네이버 메일주소(주소@naver.com)"
message['To'] = ",".join(recipients)

content = """
    <html>
    <body>
        <h2>{title}</h2>
        <p>메일 전송 테스트입니다</p>
    </body>
    </html>
""".format(
title = '메일.. 받으셨나요..?'
)

mimetext = MIMEText(content,'html')
message.attach(mimetext)

email_id = '네이버 id'
email_pw = '네이버 비밀번호'

server = smtplib.SMTP('smtp.naver.com',587)
server.ehlo()
server.starttls()
server.login(email_id,email_pw)
server.sendmail(message['From'],recipients,message.as_string())
server.quit()

정말 처음 말한것처럼 메일 보내기 참 쉽지않나요? 전체 코드를 다 첨부했는데도, 컨텐츠 제외하고 한 15줄이면 파이썬에서 네이버 메일을 사용해 누구에게나 메일을 보낼 수 있습니다.

 

네이버메일 말고 지메일 등 다른 메일들도, 이 포맷에서 크게 달라지지 않기 때문에, 다른 메일 도메인을 사용하고 싶으시더라도 세팅하는데 그렇게 어렵지는 않을거에요ㅎㅎ

 

여기까지 안되는 부분이 있다면 댓글로 질문주세요~!

 

그럼 다음엔 이메일에 이미지나 첨부파일을 추가하는 등 진짜 완전 어렵고 복잡한 기능들을 다루는 방법을 알려드리겠습니다(뻥입니다 얘네들도 똑같이 쉽습니다).

728x90

댓글