Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 SMTP 프로토콜 클라이언트(smtplib)


Python의 표준 라이브러리에는 Python 프로그램을 통해 메일을 보내는 데 사용할 수 있는 SMTP 클라이언트 세션 개체를 정의하는 'smtplib' 모듈이 있습니다.

메일 서버는 인터넷을 통해 전자 메일을 처리하고 전달하는 응용 프로그램입니다. 발신 메일 서버는 이메일 전송을 위한 인터넷 표준인 SMTP 또는 Simple MailTransfer Protocol을 구현합니다.

수신 메일 서버는 두 가지 주요 유형으로 제공됩니다. POP3 또는 우체국 프로토콜 및 IMAP 또는 인터넷 메시지 액세스 프로토콜.

smptlib.SMTP() 함수

이 함수는 SMTP 클래스의 개체를 반환합니다. SMTP 또는 ESMTP 서버에 대한 연결을 캡슐화하고 관리합니다. 다음 인수는 이 함수의 서명에 정의되어 있습니다 -

호스트
연결할 원격 호스트의 이름인 문자열.
포트
연결할 포트를 지정하는 숫자. 기본적으로 smtplib.SMTP_PORT가 사용됩니다.
local_hostname
HELO/EHLO 명령에서 로컬 호스트의 FQDN으로 사용됩니다.
소스_주소
소켓이 바인딩할 2-튜플(호스트, 포트) 개체

SMTP 작업을 지원하는 다음과 같은 방법이 있습니다 -

연결() -

이 방법은 주어진 포트에서 호스트에 대한 연결을 설정합니다.

로그인() -

이 함수는 사용자 이름과 암호 인수를 사용하여 SMTP 서버에 로그인합니다.

종료() -

SMTP 세션을 종료하는 기능입니다.

데이터() -

이 함수에 대한 'message' 인수는 서버로 전송됩니다.

docmd ()-

이 함수는 명령을 보내고 응답 코드를 반환합니다.

안녕 () -

이 함수는 서버를 식별합니다.

starttls() -

이 함수는 TLS 모드를 시작합니다.

회신 () -

이 함수는 응답 코드 형태로 서버로부터 응답을 받습니다.

putcmd () -

이 함수는 서버에 명령을 보냅니다.

send_message() -

이 함수는 메시지를 바이트 문자열로 변환하여 메일을 보내기 위해 전달합니다.

메일 보내기 () -

이 명령은 전체 메일 트랜잭션을 수행합니다.

인수는 -

from_addr
이 메일을 보내는 주소입니다.
to_addrs
이 메일을 보낼 주소 목록입니다.
메시지
보낼 메시지입니다.

아래 코드는 gmail의 smtp 서버를 사용하여 이메일을 보냅니다. SMTP 개체는 포트 527에서 gmail의 smtp 서버를 사용합니다. ehlo() 명령은 서버를 식별합니다. 또한 보내는 메일 메시지에 대해 Transport Layer Security를 ​​활성화합니다.

다음으로, 자격 증명을 인수로 전달하여 login() 명령이 호출됩니다. 마지막으로 메일 메시지는 정해진 형식의 헤더를 첨부하여 조합하고 sendmail() 메서드를 사용하여 전송합니다. SMTP 개체는 나중에 닫힙니다.

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


위의 스크립트를 실행하기 전에 발신자의 Gmail 계정에 '보안 수준이 낮은 앱'에 대한 액세스 권한이 제공되었는지 확인하십시오.

https://myaccount.google.com/lesssecureapps

표시된 토글 버튼을 ON으로 설정합니다.

Python의 SMTP 프로토콜 클라이언트(smtplib)

위의 설정을 수행한 후 위의 스크립트를 실행한다. 메시지는 받는 사람의 받은 편지함으로 배달되어야 합니다.