python
이전 페이지다음 페이지
SMTP(Simple Mail Transfer Protocol)는 메일 서버 간의 전자 메일 전송 및 라우팅을 처리하는 프로토콜입니다.
Python은 smtplib를 제공합니다. SMTP 또는 ESMTP 수신기 데몬이 있는 모든 인터넷 시스템에 메일을 보내는 데 사용할 수 있는 SMTP 클라이언트 세션 개체를 정의하는 모듈입니다.
다음은 나중에 전자 메일을 보내는 데 사용할 수 있는 하나의 SMTP 개체를 만드는 간단한 구문입니다.
import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
다음은 매개변수의 세부사항입니다 -
호스트 − SMTP 서버를 실행하는 호스트입니다. 호스트의 IP 주소 또는 tutorialspoint.com과 같은 도메인 이름을 지정할 수 있습니다. 이것은 선택적 인수입니다.
포트 − 호스트를 제공하는 경우 인수를 사용하는 경우 SMTP 서버가 수신하는 포트를 지정해야 합니다. 일반적으로 이 포트는 25입니다.
local_hostname − SMTP 서버가 로컬 컴퓨터에서 실행 중인 경우 localhost만 지정할 수 있습니다. 이 옵션을 기준으로 합니다.
SMTP 개체에는 sendmail이라는 인스턴스 메서드가 있습니다. , 일반적으로 메시지를 메일로 보내는 작업을 수행하는 데 사용됩니다. 세 개의 매개변수가 필요합니다 -
발신자 − 보낸 사람의 주소가 포함된 문자열입니다.
수신자 − 각 수신자에 대해 하나씩 문자열 목록입니다.
메시지 − 다양한 RFC에 지정된 대로 형식이 지정된 문자열인 메시지.
다음은 Python 스크립트를 사용하여 하나의 이메일을 보내는 간단한 방법입니다. 한 번 해보세요 -
#!/usr/bin/python import smtplib sender = '[email protected]' receivers = ['[email protected]'] message = """From: From Person <[email protected]> To: To Person <[email protected]> Subject: SMTP e-mail test This is a test e-mail message. """ try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print "Successfully sent email" except SMTPException: print "Error: unable to send email"
여기에서 헤더 형식을 올바르게 지정하도록 주의하면서 삼중 따옴표를 사용하여 메시지에 기본 전자 메일을 배치했습니다. 이메일에는 보낸사람이 필요합니다. , 받는 사람 , 및 제목 헤더, 빈 줄로 이메일 본문과 구분됨.
메일을 보내려면 smtpObj를 사용하세요. 로컬 컴퓨터의 SMTP 서버에 연결한 다음 sendmail 메시지, 보낸 사람 주소 및 대상 주소와 함께 매개 변수로 메서드를 사용합니다. 보낸 사람 및 받는 사람 주소가 전자 메일 자체에 있지만 메일을 라우팅하는 데 항상 사용되는 것은 아닙니다.
로컬 컴퓨터에서 SMTP 서버를 실행하지 않는 경우 smtplib를 사용할 수 있습니다. 클라이언트는 원격 SMTP 서버와 통신합니다. 웹메일 서비스(예:Hotmail 또는 Yahoo! Mail)를 사용하지 않는 한 전자 메일 공급자는 다음과 같이 제공할 수 있는 보내는 메일 서버 세부 정보를 제공해야 합니다. −
smtplib.SMTP('mail.your-domain.com', 25)
Python을 사용하여 문자 메시지를 보내면 모든 내용이 단순 텍스트로 처리됩니다. 문자 메시지에 HTML 태그를 포함해도 간단한 텍스트로 표시되며 HTML 구문에 따라 HTML 태그의 서식이 지정되지 않습니다. 그러나 Python은 HTML 메시지를 실제 HTML 메시지로 보낼 수 있는 옵션을 제공합니다.
이메일 메시지를 보내는 동안 HTML 이메일을 보낼 Mime 버전, 콘텐츠 유형 및 문자 집합을 지정할 수 있습니다.
다음은 HTML 콘텐츠를 이메일로 보내는 예제입니다. 한 번 해보세요 -
#!/usr/bin/python import smtplib message = """From: From Person <[email protected]> To: To Person <[email protected]> MIME-Version: 1.0 Content-type: text/html Subject: SMTP HTML e-mail test This is an e-mail message to be sent in HTML format <b>This is HTML message.</b> <h1>This is headline.</h1> """ try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, receivers, message) print "Successfully sent email" except SMTPException: print "Error: unable to send email"
혼합 콘텐츠가 포함된 이메일을 보내려면 콘텐츠 유형을 설정해야 합니다. multipart/mixed 헤더 . 그런 다음 경계 내에서 텍스트 및 첨부 파일 섹션을 지정할 수 있습니다. .
경계는 전자 메일의 메시지 부분에 나타날 수 없는 고유 번호가 뒤에 오는 두 개의 하이픈으로 시작됩니다. 이메일의 마지막 섹션을 나타내는 마지막 경계도 두 개의 하이픈으로 끝나야 합니다.
첨부 파일은 pack("m")으로 인코딩해야 합니다. 전송하기 전에 base64로 인코딩하는 기능입니다.
다음은 /tmp/test.txt 파일을 보내는 예입니다. 첨부 파일로. 한 번 해보세요 -
#!/usr/bin/python import smtplib import base64 filename = "/tmp/test.txt" # Read a file and encode it into base64 format fo = open(filename, "rb") filecontent = fo.read() encodedcontent = base64.b64encode(filecontent) # base64 sender = '[email protected]' reciever = '[email protected]' marker = "AUNIQUEMARKER" body =""" This is a test email to send an attachement. """ # Define the main headers. part1 = """From: From Person <[email protected]> To: To Person <[email protected]> Subject: Sending Attachement MIME-Version: 1.0 Content-Type: multipart/mixed; boundary=%s --%s """ % (marker, marker) # Define the message action part2 = """Content-Type: text/plain Content-Transfer-Encoding:8bit %s --%s """ % (body,marker) # Define the attachment section part3 = """Content-Type: multipart/mixed; name=\"%s\" Content-Transfer-Encoding:base64 Content-Disposition: attachment; filename=%s %s --%s-- """ %(filename, filename, encodedcontent, marker) message = part1 + part2 + part3 try: smtpObj = smtplib.SMTP('localhost') smtpObj.sendmail(sender, reciever, message) print "Successfully sent email" except Exception: print "Error: unable to send email"
python
구성품 및 소모품 MikroE 플립 앤 클릭 × 1 Arduino Due × 1 입자 광자 × 1 NodeMCU ESP8266 브레이크아웃 보드 × 1 SparkFun Photon 레드보드 × 1 MikroE Temp&Hum 클릭 × 1 MikroE WiFi 플러스 클릭 × 1 Espressif Wemos D1 미니 × 1 Arduino Zero × 1 앱
구성품 및 소모품 Arduino UNO × 1 웹 캠 × 1 마이크로 서보 × 2 팬-틸트 × 1 브레드보드(일반) × 1 앱 및 온라인 서비스 파이썬 2.7 OpenCV 이 프로젝트 정보 이전 튜토리얼에서 pyserial 모듈을 사용하여 Arduino와 Python 간에 통신하고 LED를 제어하는 방법을 공유했습니다. 아직 보지 못했다면 여기에서 확인하세요:COMMU