利用python发邮件
在刚开始学习python的时候就听有的人说,用python发邮件简直太轻松了,随着学习的深入,今天学习了一下python的smtplib模块,果不其然,只需几行代码就可以轻松实现发邮件的功能。
在本例中,使用自己的163邮箱给qq邮箱发测试样例。
一共需要四部即可
- 连接到服务器
- 登录
- 发出服务请求
- 退出
遵从这四步,首先一段简单的:
1 | #coding: utf-8 |
sendmail()
的所有参数要遵循RFC 2822,即电子邮件的地址必须要有正确的格式,消息体要有正确的前导头,前导头后是两个回车和换行(\r\n
)对- SMTP通讯时,只要一个端口
25
以上很简单的就实现了利用python自带的smtplib
模块实现了发送邮件的功能,但是在现实发邮件中,肯定比这样的要复杂。这时需要另一个模块email
,email
负责构造邮件,smtplib
负责发送邮件。
构造一个邮件对象就是一个Messag
对象,如果构造一个MIMEText
对象,就表示一个文本邮件对象,如果构造一个MIMEImage
对象,就表示一个作为附件的图片,要把多个对象组合起来,就用MIMEMultipart
对象,而MIMEBase
可以表示任何对象。
一个例子:
1 | # -*- coding: utf-8 -*- |
编写了一个函数_format_addr()
来格式化一个邮件地址。注意不能简单地传入name <[email protected]>
,因为包含中文,所以需要使用Header
对象进行编码。
若需要添加附件时,可以构造一个MIMEMultipart
对象代表邮件本身,然后往里面加上一个MIMEText
作为邮件正文,再继续往里面加上表示附件的MIMEBase
对象即可。
原文出处: 利用python发邮件(一)
原文出处: 利用python发邮件(二)