>  기사  >  백엔드 개발  >  Python SMTP 메일 모듈에 대한 자세한 설명

Python SMTP 메일 모듈에 대한 자세한 설명

零下一度
零下一度원래의
2017-05-24 14:09:002085검색

SMTP는 이메일 전송을 위한 프로토콜입니다. Python에는 SMTP 지원 기능이 내장되어 있으며 일반 텍스트 이메일, HTML 이메일, 첨부 파일이 포함된 이메일을 보낼 수 있습니다.

Python은 smtplib과 email이라는 두 가지 모듈로 SMTP를 지원합니다. 이메일은 이메일 구성을 담당하고 smtplib는 이메일 전송을 담당합니다.

예:

1. Python을 사용하여 일반 텍스트 및 HTML 형식으로 이메일을 보냅니다.

 email.mime.text  
  email.utils 
 msg = MIMEText(message, , ) 
   msg[] = formataddr([,])          
   msg[] = formataddr([,])               
   msg[] =                              
   server = smtplib.SMTP(, 25                                    
   server.login(,                  
   server.sendmail(, [          
   u                
   u   ==      cpu = 100    
  disk = 500     mem = 50     
  i  range(1         
  cpu > 90            
 alert = u           
 disk > 90             
 alert = u          
 mem > 80            
  alert = u            
  email(alert)
#Python发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为html
1  msg = MIMEText(&#39;<html><body><h1>Hello</h1>&#39; +2     
&#39;<p>send by <a href="http://www.python.org">Python</a>...</p>&#39; +3     
&#39;</body></html>&#39;, &#39;html&#39;, &#39;utf-8&#39;)

2. Python을 사용하여 첨부 파일이 포함된 이메일을 보냅니다.

첨부 파일이 포함된 이메일을 보내려면 먼저 MIMEMultipart() 인스턴스를 생성한 다음 첨부 파일을 구성해야 합니다. 첨부 파일이 여러 개인 경우 순서대로 구성하고 마지막으로 smtplib.smtp를 사용하여 보낼 수 있습니다.

rree

3.HTML 텍스트에 그림 추가

일반 이메일 서비스 제공업체가 이메일의 HTML 텍스트에 외부 링크를 추가하는 것은 올바르지 않습니다. 획기적인 추가 사항은 다음과 같습니다. 디스플레이:

 1 #!/usr/bin/env python 2 #coding:utf-8 3  4 import smtplib 5 from email.mime.text import MIMEText 6 from email.utils import formataddr 7 from email.mime.multipart import MIMEMultipart 8  9 def email(message):10 11     msg = MIMEMultipart()12     msg[&#39;From&#39;] = formataddr(["管理员",&#39;ylemail2012@sina.cn&#39;])13     msg[&#39;To&#39;] = formataddr(["Saneri",&#39;349622541@qq.com&#39;])14     msg[&#39;Subject&#39;] = "Zabbix报警系统!"15     msg.attach(MIMEText(message, &#39;plain&#39;, &#39;utf-8&#39;))16 17     #---这是附件部分---18     # 构造附件1,文本类型附件19     att1 = MIMEText(open(&#39;test.txt&#39;, &#39;rb&#39;).read(), &#39;base64&#39;, &#39;utf-8&#39;)20     att1["Content-Type"] = &#39;application/octet-stream&#39;21     # 这里的filename可以任意写,写什么名字,邮件中显示什么名字22     att1["Content-Disposition"] = &#39;attachment; filename="test.txt"&#39;23     msg.attach(att1)24 25     # 构造附件2,jpg类型附件26     from email.mime.application import MIMEApplication27     att2 = MIMEApplication(open(&#39;001.jpg&#39;,&#39;rb&#39;).read())28     att2.add_header(&#39;Content-Disposition&#39;, &#39;attachment&#39;, filename="001.jpg")29     msg.attach(att2)30     #构造附件3,pdf类型附件31     att3 = MIMEApplication(open(&#39;test.pdf&#39;,&#39;rb&#39;).read())32     att3.add_header(&#39;Content-Disposition&#39;, &#39;attachment&#39;, filename="test.pdf")33     msg.attach(att3)34     #构造附件4,xlsx类型附件35     att4 = MIMEApplication(open(&#39;test.xlsx&#39;,&#39;rb&#39;).read())36     att4.add_header(&#39;Content-Disposition&#39;, &#39;attachment&#39;, filename="test.xlsx")37     msg.attach(att4)38     #构造附件5,mp3类型附件39     att5 = MIMEApplication(open(&#39;test.mp3&#39;,&#39;rb&#39;).read())40     att5.add_header(&#39;Content-Disposition&#39;, &#39;attachment&#39;, filename="test.mp3")41     msg.attach(att5)42 43     try:44         server = smtplib.SMTP("smtp.sina.com", 25)45         #set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息46         #server.set_debuglevel(1)47         #login()方法用来登录SMTP服务器48         server.login("ylemail2012@sina.cn","password")49         #sendmail()方法就是发邮件,由于可以一次发给多个人,所以传入一个list,邮件正文是一个str,as_string()把MIMEText对象变成str50         server.sendmail(&#39;ylemail2012@sina.cn&#39;, [&#39;349622541@qq.com&#39;,], msg.as_string())51         print u"邮件发送成功!"52         server.quit()53     except smtplib.SMTPException:54         print u"Error: 无法发送邮件"55 if name == &#39;main&#39;:56     cpu = 10057     disk = 50058     mem = 5059     for i in range(1):60         if cpu > 90:61             alert = u"CPU出问题!"62             email(alert)63         if disk > 90:64             alert = u"硬盘出问题!"65             email(alert)66         if mem > 80:67             alert = u"内存出问题!"68             email(alert)

4. HTML 및 일반 형식 모두 지원

HTML 이메일을 보내면 수신자는 브라우저나 다음과 같은 소프트웨어를 통해 이메일 내용을 정상적으로 탐색할 수 있습니다. Outlook은 수신자가 사용하는 장치가 너무 오래되어 HTML 이메일을 볼 수 없다면 어떻게 되나요?

HTML 전송 시 일반 텍스트를 첨부하는 방식으로, 수신자가 HTML 형식의 이메일을 볼 수 없는 경우 자동으로 일반 텍스트 이메일을 볼 수 있도록 다운그레이드할 수 있습니다.

HTML과 Plain을 결합하려면 MIMEMultipart을 사용하세요. 지정된 하위 유형은 alternative

 1 #!/usr/bin/env python 2 #coding:utf-8 3  4 import smtplib 5 from email.mime.multipart import MIMEMultipart 6 from email.mime.text import MIMEText 7 from email.mime.image import MIMEImage 8 from email.utils import formataddr 9 10 def email():11     msg = MIMEMultipart()12     msg[&#39;From&#39;] = formataddr(["管理员",&#39;ylemail2012@sina.cn&#39;])13     msg[&#39;To&#39;] = formataddr(["Saneri",&#39;349622541@qq.com&#39;])14     msg[&#39;Subject&#39;] = "Zabbix报警系统!"15     msg.attach(MIMEText(&#39;<b>Some <i>HTML</i> text</b> and an image.<br><img src="cid:image1"><br>good!&#39;,&#39;html&#39;,&#39;utf-8&#39;))16 17     fp = open(&#39;001.jpg&#39;, &#39;rb&#39;)18     msgImage = MIMEImage(fp.read())19     fp.close()20     msgImage.add_header(&#39;Content-ID&#39;, &#39;<image1>&#39;)21     msg.attach(msgImage)22     try:23         server = smtplib.SMTP("smtp.sina.com", 25)24         server.login("ylemail2012@sina.cn","password")25         server.sendmail(&#39;ylemail2012@sina.cn&#39;, [&#39;349622541@qq.com&#39;,], msg.as_string())26         print u"邮件发送成功!"27         server.quit()28     except smtplib.SMTPException:29         print u"Error: 无法发送邮件"30 31 if name == &#39;main&#39;:32     email()

[관련 권장 사항]


입니다. 🎜>SMTP를 사용하여 이메일을 보내는 Python의 예에 대한 자세한 소개

2.

SMTP를 사용하여 이메일을 보내는 Python의 코드 요약

3. 🎜>c#은 qq 메일함을 호출합니다. smtp를 통해 이메일을 보내기 위한 수정된 코드

4. Python은 이메일을 보내기 위해 SMTP를 사용합니다

5. emails

6. Python을 사용하여 SMTP를 구현하여 사진과 텍스트가 포함된 이메일을 보내는 예 공유

7. Python 사용 예 SSL/TLS 보안 이메일을 보내는 smtplib 모듈

위 내용은 Python SMTP 메일 모듈에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.