博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python SMTP 发送邮件
阅读量:7124 次
发布时间:2019-06-28

本文共 2502 字,大约阅读时间需要 8 分钟。

python SMTP 发送邮件几个常用的包与类:

email 包:

mime:

  base.MIMEBase  构造一个message的组件,可以用add_header('设置头信息')

  multipart.MIMEMultipart 产生一个中间件,可以用attach(组件)往里面添加组件。

  text.MIMEText 构造一个纯文本。

header: 设置To、From、Sub  的非ascii编码

encoders:用于转换编码

utils:里面提供了一些工具方法。

具体代码:

1 #!C:\Python34 2 # -*- coding:utf-8 -*- 3 from email import encoders #提供各种转换编码的方法 4 from email.header import Header #将非ascii编码转换为ascii编码 5 from email.mime.text import MIMEText #用于发送纯文本格式的邮件 6 from email.mime.multipart import MIMEMultipart #用于产生一个中间件 7 from email.utils import parseaddr, formataddr #格式化收件人 地址 8 from email.mime.base import MIMEBase 9 10 import smtplib11 import logging12 13 def _format_addr(s):14     name, addr = parseaddr(s)15     return formataddr((Header(name, 'utf-8').encode(), addr))16 17 from_addr = 'xxxx';#input(u'请输入136邮箱账号:');18 password = 'xxxx';#input(u'请输入密码:')19 to_addr = 'xxxx';#input(u'请输入对方邮箱:')20 smtp_server = "xxxx";21 smtp_port = 25;22 23 def send_mail (to_list,sub,content,base):24     #to_list 接收者列表25     # sub 邮件主题26     # content 邮件内容27     # base 附件名称28     msg = MIMEMultipart();29     msg['From'] = _format_addr('Python 爱好者 <%s>'% from_addr)30     msg['To'] = ';'.join (to_list)31     msg['Subject'] = Header(sub,'utf-8').encode();32 33     msg.attach(MIMEText(content,'html','utf-8'));34     #附件35     with open(r'G:\temp\pictrue\\'  + base,'rb') as f:36         #设置附件的MIME和文件名37         mime = MIMEBase('image','jpg',filename = base);38         #设置必要的头信息39         mime.add_header('Content-Desposition','attachment',filename = base);40         mime.add_header('Content-ID','<0>');41         mime.add_header('X-Attachment-Id','0');42         #把附件内容添加进来43         mime.set_payload(f.read());44         #转换为base6445         encoders.encode_base64(mime);46         #添加到MIMEMultipart47         msg.attach(mime)48         49     try:50         server = smtplib.SMTP(smtp_server,smtp_port);51         #建立安全连接52         server.starttls();53         server.login(from_addr,password);54         server.sendmail(from_addr,to_list,msg.as_string())55         return True;56     except Exception as e :57         logging.exception(e);58         return False;59     finally :60         server.quit();61         print('server 关闭');62 #发送内容63 content = r'

Hello

send By Python! wish you a happy holidays 想学习python 请点击python

'64 sub = '来自SMTP的问候'65 base = '2.jpg'66 if send_mail([to_addr],sub,content,base):67 print('发送成功');68 else :69 print('发送失败');
View Code

 

转载于:https://www.cnblogs.com/hf-china/p/5130626.html

你可能感兴趣的文章
ubuntu下安装MyEclipse10和MySql,为MyEclipse配置android ADT(全程截图)
查看>>
我的友情链接
查看>>
设置接口跨域调用方法
查看>>
python selenium系列(八)元素定位进阶之分层定位
查看>>
MySQL多表连接优化一例
查看>>
PHP动态扩展模块安装
查看>>
AgileEAS.NET平台开发实例-药店系统-UI层重构技巧及其他
查看>>
我的友情链接
查看>>
Shell开发的一些技巧和经验
查看>>
5-2 array 数组的赋值及遍历
查看>>
Go编程基础 - 类型与变量
查看>>
外链优化的发展
查看>>
集合类操作优化经验总结(三)
查看>>
内存数据库 eXtreme db 插入测试
查看>>
我的友情链接
查看>>
html input readonly 和 disable的区别
查看>>
Firebug控制台详解,让调试js代码变得更简单
查看>>
无法访问Docker容器映射到宿主上的端口
查看>>
Gmagick最新版本安装错误
查看>>
Outlook配置
查看>>