Python SMTP邮件模块详解

零下一度
发布: 2017-05-24 14:09:00
原创
2231人浏览过

smtp是发送邮件的协议,python内置对smtp的支持,可以发送纯文本邮件、html邮件以及带附件的邮件。

Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,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('<html><body><h1>Hello</h1>' +2     
'<p>send by <a href="http://www.python.org">Python</a>...</p>' +3     
'</body></html>', 'html', 'utf-8')
登录后复制

2.Python 发送带附件的邮件.

发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后利用smtplib.smtp发送。

 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['From'] = formataddr(["管理员",'ylemail2012@sina.cn'])13     msg['To'] = formataddr(["Saneri",'349622541@qq.com'])14     msg['Subject'] = "Zabbix报警系统!"15     msg.attach(MIMEText(message, 'plain', 'utf-8'))16 17     #---这是附件部分---18     # 构造附件1,文本类型附件19     att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')20     att1["Content-Type"] = 'application/octet-stream'21     # 这里的filename可以任意写,写什么名字,邮件中显示什么名字22     att1["Content-Disposition"] = 'attachment; filename="test.txt"'23     msg.attach(att1)24 25     # 构造附件2,jpg类型附件26     from email.mime.application import MIMEApplication27     att2 = MIMEApplication(open('001.jpg','rb').read())28     att2.add_header('Content-Disposition', 'attachment', filename="001.jpg")29     msg.attach(att2)30     #构造附件3,pdf类型附件31     att3 = MIMEApplication(open('test.pdf','rb').read())32     att3.add_header('Content-Disposition', 'attachment', filename="test.pdf")33     msg.attach(att3)34     #构造附件4,xlsx类型附件35     att4 = MIMEApplication(open('test.xlsx','rb').read())36     att4.add_header('Content-Disposition', 'attachment', filename="test.xlsx")37     msg.attach(att4)38     #构造附件5,mp3类型附件39     att5 = MIMEApplication(open('test.mp3','rb').read())40     att5.add_header('Content-Disposition', 'attachment', 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('ylemail2012@sina.cn', ['349622541@qq.com',], msg.as_string())51         print u"邮件发送成功!"52         server.quit()53     except smtplib.SMTPException:54         print u"Error: 无法发送邮件"55 if name == 'main':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)
登录后复制

3.在 HTML 文本中添加图片

邮件的 HTML 文本中一般邮件服务商添加外链是无效的,正确添加突破的实例如下所示:

立即学习Python免费学习笔记(深入)”;

 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['From'] = formataddr(["管理员",'ylemail2012@sina.cn'])13     msg['To'] = formataddr(["Saneri",'349622541@qq.com'])14     msg['Subject'] = "Zabbix报警系统!"15     msg.attach(MIMEText('<b>Some <i>HTML</i> text</b> and an image.<br>@@##@@<br>good!','html','utf-8'))16 17     fp = open('001.jpg', 'rb')18     msgImage = MIMEImage(fp.read())19     fp.close()20     msgImage.add_header('Content-ID', '<image1>')21     msg.attach(msgImage)22     try:23         server = smtplib.SMTP("smtp.sina.com", 25)24         server.login("ylemail2012@sina.cn","password")25         server.sendmail('ylemail2012@sina.cn', ['349622541@qq.com',], msg.as_string())26         print u"邮件发送成功!"27         server.quit()28     except smtplib.SMTPException:29         print u"Error: 无法发送邮件"30 31 if name == 'main':32     email()
登录后复制

4.同时支持HTML和Plain格式

如果我们发送HTML邮件,收件人通过浏览器或者Outlook之类的软件是可以正常浏览邮件内容的,但是,如果收件人使用的设备太古老,查看不了HTML邮件怎么办?

办法是在发送HTML的同时再附加一个纯文本,如果收件人无法查看HTML格式的邮件,就可以自动降级查看纯文本邮件。

利用MIMEMultipart就可以组合一个HTML和Plain,要注意指定subtype是alternative

1 msg = MIMEMultipart('alternative')2 msg['From'] = ...3 msg['To'] = ...4 msg['Subject'] = ...5 6 msg.attach(MIMEText('hello', 'plain', 'utf-8'))7 msg.attach(MIMEText('<html><body><h1>Hello</h1></body></html>', 'html', 'utf-8'))8 # 正常发送msg对象...
登录后复制

【相关推荐】

C3CRM
C3CRM

在SugarCRM v4.0.1基础上开发的版本,在这一版本中,我们在原有模块基础上增加了以下模块:1、产品模块(Products);2、价格单模块(PriceBooks);3、报价模块(Quote);4、共享模块(Share);5、报表模块(Reports)。同时修正论坛上所提的和C3CRM团队测试过程发现的bug(包括翻译bug),而且还解决邮件模块不能正常收发邮件的问题。共享模块结合Suga

C3CRM 0
查看详情 C3CRM

1. 详细介绍Python使用SMTP发送邮件实例

2. Python 使用SMTP发送邮件的代码小结

3. c#调用qq邮箱smtp发送邮件修改版代码

4. Python使用SMTP发送邮件

5. php smtp发送邮件

6. 分享Python实现SMTP发送邮件图文实例

7. python smtplib模块发送SSL/TLS安全邮件实例

Python SMTP邮件模块详解

以上就是Python SMTP邮件模块详解的详细内容,更多请关注php中文网其它相关文章!

相关标签:
python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号