Python邮件发送
邮件的三种传送协议
- SMTP(simple mail transfer protocol):简单邮件传输协议,SMTP认证,简单说就是要求必须在提供了账号和密码之后才可以登录SMTP服务器
- POP3:post office protocol邮局协议
- IMAP:internet mail access protocol交互式邮件存取协议
smtplib和email模块
Python发送邮件需要掌握两个模块,分别是 smtplib和email两个模块,这两个模块都是python自带的,只要import即可使用。
email负责构造邮件,指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。
smtplib负责发送邮件,是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)
发送邮件前准备
- 开启SMTP服务
在使用前需要开启SMTP服务,例如QQ邮箱开启SMTP服务:
设置完成后,对应的服务地址:smtp.qq.com/pop.qq.com,,可用户使用第三方应用(例如foxmail)上登录QQ账号
2.邮箱登录授权码
在脚本内执行登录邮箱的操作,还需要获取账号的授权码(授权码的作用是用于登录第三方邮件客户端的专用密码)
短信发送成功后,点击“我已发送”,则会打开生成授权码页面,如下:
脚本结构
- 导入发送邮件模块、邮件内容、邮件标题
- 定义发送邮箱服务器
- 定义发送邮箱的用户名和授权码
- 定义发送的邮箱和接收的邮箱
- 定义邮件标题和内容
- 定义html邮件正文(整合标题变量和内容变量、发送邮箱、接收邮箱)
- 组合服务地址和端口
- 向服务器校验身份
- 登录邮箱账号
- 开始发送邮件
脚本正文(发送给单个收件人)
脚本
脚本执行成功:
Smtplib基础语法
- smtp.SMTP_SSL(host,port):host为服务器的地址,port为端口,此处用的是ssl的端口465
- login(user,password):登录的用户名和授权密码
- sendmail((from_addr,to_addrs,msg,...):发件人、收件人、发送消息
- msg:发送消息:邮件内容。一般是msg.as_string():as_string()是将msg(MIMEText对象或者MIMEMultipart对象)变为str
- quit():用于结束SMTP会话
email常用模块
email模块下有包mime英文全称为“Multipurpose Internet Mail Extensions”,即多用途互联网邮件扩展。Mime包下常用的三个模块:text、image、multpart
参考资料:https://www.cnblogs.com/yufeihlf/p/5726619.html
脚本正文(发送给多个收件人)
脚本
1.以列表的方式定义收件人列表:
receives=[‘收件人邮箱账号01’,’收件人邮箱账号02’]
- 多个收件人以““,”逗号进行分隔
msg[‘To’]=’,’.join(receives)
其他内容与发送给单个收件人的脚本一致
邮件正文(发送附件)
部分脚本
在原有的脚本正文内增加“构造附件内容”、修改“构建发送和接收信息“模块脚本
附件属性说明
Content-Type:WEB服务器告诉浏览器自己响应的对象的类型和字符集。例如:Content-Type: text/html; charset='gb2312'
文件内容的类型对应表:http://tool.oschina.net/commons
Content-Disposition:作为对下载文件的一个标识字段弹出一个”文件下载”的对话框,
inline表示浏览器内嵌显示一个文件,attachment表示会下载文件;
注意,若Content-Type= application/octet-stream,则不论是Content-Disposition设置为inline还是attachment都是以附件下载的形式