웹개발 및 최신 테크 소식을 전하는 블로그, 웹이즈프리

HOME > python

Python daum SMTP로 이메일 보내는 방법

Last Modified : 2018-08-05 / Created : 2018-08-05
7,583
View Count

Daum 메일을 사용하여 Python에서 메일을 보내는 방법을 알아봅니다. 어떻게하면 Python에서 Daum 메일서버를 통하여 메일을 보낼 수 있을까요? 아래에서 자세히 알아보겠습니다.




# Python Daum 메일서버로 메일 보내기

Python 웹서버에서 지메일 또는 다음 등의 메일 서비스 서버를 사용하여 웹메일을 발송할 수 있습니다. 이번에 알아볼 다음 메일의 경우에도 메일 발송시 다음 SMTP를 사용하여 가능합니다.


! Daum 메일에 SMTP 활성화하기

가장 먼저 Daum 메일에서 imap/pop3 탭으로 이동하여  사용 설정을 '사용함'으로 변경해야 메일 발송이 가능합니다. 아래와 같이 설정하도록 합니다.

- Daum 메일의 환경설정으로 이동하기
- IMAP / POP3 탭으로 이동
- 상단 SMTP 사용하기를 활성화하기

스크린샷) IMAP, POP3에 위치한 SMTP 사용하기

위와 같이 설정이 완료되면 이제 Python의 코드를 작성해보겠습니다.


! Python에 모듈 추가하기

가장 먼저 모듈을 추가해야합니다. Python에서 메일을 보내기 위해서 smtplib 모듈이 필요한데요 다음 메일 발송에는 모듈이 가지고 있는 함수 SMTP_SSL()를 사용하여 메일을 보낼 것입니다. 그래서 아래처럼 모듈을 추가합니다.
from smtplib import SMTP_SSL

모듈이 추가되면 여러가지 메일 발송에 필요한 정보를 입력하고 보내야합니다. 이때 아래와 같은 내용이 필요하겠죠.

- 보내는 사람
- 받는 사람
- 제목
- 내용

그럼 아래에서 전체 예제 코드를 알아보겠습니다. 메일 발송을 Python에 별도 컴포넌트로 등록해서 사용하면 더 좋겠습니다.
@ /component/email.py
from smtplib import SMTP_SSL

def put():
    try:
        toEmail = '받을 이메일 주소'
        fromEmail = 'support@webisfree.com'
        TitleEmail = '이메일 제목입니다'

        msg = "\r\n".join([
            "From: " + fromEmail,
            "To: " + toEmail,
            "Subject: " + TitleEmail,
            "",
            "여기에 내용이 들어갑니다"
        ])

        ## Daum SMTP
        conn = SMTP_SSL("smtp.daum.net:465")
        conn.ehlo()

        loginId = 'email'
        loginPassword = 'password'
        conn.login(loginId, loginPassword)

        conn.sendmail(fromEmail, to_email, msg)
        conn.close()
        return 'Success to send emails.'


    except Exception as e:
        return "Failed. error" + str(e)

여기까지 다음 메일을 사용하여 Python에서 메일을 발송하는 방법에 대하여 알아보았습니다.

! 언제 메일 발송이 필요할까요?

여러 이유가 있겠지만 제 경우 이메일 발송 웹어플리케이션의 cms에 추가해 두었습니다. 그 이유는 방문자가 문의하거나 기타 사유로 메일 발송이 필요할 수 있습니다. 그때 텍스트가 아닌 이메일html 템플릿을 미리 서버에 저장해두고 발송한다면 신뢰하고 디자인된 최적의 메일을 발송할 수 있겠죠.

또 다른 이유로 매체, 블로그 등에서 구독자에게 메일을 발송하기 위함입니다.

Previous

Python flask에서 커스텀 에러 페이지 만들기, 404

Previous

Python Jinja template에서 주석 사용하는 방법