Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 SMTP 프로토콜 클라이언트 완벽 가이드: smtplib 모듈 활용법

파이썬 smtplib 모듈이란?

파이썬 표준 라이브러리에는 smtplib 모듈이 포함되어 있으며, 이 모듈은 파이썬 프로그램에서 직접 메일을 전송할 수 있도록 SMTP 클라이언트 세션 객체를 정의합니다.

메일 서버(mail server)는 인터넷을 통해 이메일을 처리하고 전달하는 애플리케이션입니다. 발신 메일 서버는 SMTP(Simple Mail Transfer Protocol, 단순 우편 전송 프로토콜)를 구현하는데, 이는 이메일 전송을 위한 인터넷 표준입니다.

한편, 수신 메일 서버는 크게 두 가지 방식으로 나뉩니다. 하나는 POP3(Post Office Protocol), 다른 하나는 IMAP(Internet Message Access Protocol)입니다.

smtplib.SMTP() 함수

이 함수는 SMTP 클래스의 객체를 반환하며, SMTP 또는 ESMTP 서버와의 연결을 캡슐화하고 관리합니다. 함수 시그니처에 정의된 주요 인수는 다음과 같습니다.

host연결할 원격 호스트의 이름을 나타내는 문자열입니다.
port연결할 포트 번호를 지정합니다. 기본값은 smtplib.SMTP_PORT입니다.
local_hostnameHELO/EHLO 명령에서 로컬 호스트의 FQDN(완전한 도메인 이름)으로 사용됩니다.
source_address소켓이 바인딩될 2-튜플(host, port) 객체입니다.

SMTP 객체의 주요 메서드

SMTP 객체는 다음과 같은 메서드를 통해 다양한 SMTP 작업을 지원합니다.

connect()

지정된 포트에서 호스트와의 연결을 설정합니다.

login()

사용자 이름과 비밀번호를 인수로 받아 SMTP 서버에 로그인합니다.

quit()

SMTP 세션을 종료합니다.

data()

'message' 인수로 전달된 내용을 서버로 전송합니다.

docmd()

명령을 전송하고 그에 대한 응답 코드를 반환합니다.

ehlo()

서버를 식별(EHLO 명령)합니다.

starttls()

TLS(Transport Layer Security) 모드를 시작하여 통신을 암호화합니다.

getreply()

서버로부터 응답 코드 형식으로 회신을 수신합니다.

putcmd()

서버에 명령을 전송합니다.

send_message()

메시지를 바이트 문자열로 변환한 뒤 메일 전송 과정에 전달합니다.

sendmail()

전체 메일 트랜잭션을 한 번에 수행합니다. 주요 인수는 다음과 같습니다.

from_addr메일을 보내는 발신자 주소입니다.
to_addrs메일을 받을 수신자 주소 목록입니다.
msg전송할 메시지 본문입니다.

Gmail SMTP 서버로 메일 보내기 예제

아래 코드는 Gmail의 SMTP 서버를 이용해 이메일을 전송하는 예제입니다. SMTP 객체는 Gmail의 smtp 서버(smtp.gmail.com)에 587번 포트로 접속하고, ehlo() 명령으로 서버를 식별한 후, 발신 메시지에 대해 TLS 암호화를 활성화합니다.

그다음 login() 명령에 계정 정보를 인수로 전달해 로그인하고, 규정된 형식의 헤더를 메시지에 붙여 메일 본문을 구성한 뒤 sendmail() 메서드로 전송합니다. 마지막으로 SMTP 객체를 닫아 연결을 종료합니다.

import smtplib
content = "HelloWorld"
mail = smtplib.SMTP('smtp.gmail.com', 587)
mail.ehlo()
mail.starttls()
sender = 'pythonanytime@gmail.com'
recipient = 'mlathkar@gmail.com'
mail.login('pythonanytime@gmail.com', 'm15v5l61')
header = 'To:' + recipient + '\n' + 'From:' \
+ sender + '\n' + 'subject:testmail\n'
content = header + content
mail.sendmail(sender, recipient, content)
mail.close()


실행 전 필수 설정: 보안 수준 낮은 앱 허용

위 스크립트를 실행하기 전에, 발신에 사용할 Gmail 계정에서 '보안 수준이 낮은 앱(less secure apps)' 접근을 허용해야 합니다. 아래 주소로 이동하세요.

https://myaccount.google.com/lesssecureapps

표시된 토글 버튼을 ON으로 변경합니다.

파이썬 SMTP 프로토콜 클라이언트 완벽 가이드: smtplib 모듈 활용법

설정을 마친 후 스크립트를 실행하면, 메시지가 수신자의 받은 편지함으로 정상적으로 전달됩니다.