python中邮件发送可以使用smtplib模块,也可以使用第三方的yagmail模块。
邮件从MUA发出去之后,先发到MTA(Mail Transfer Agent,邮件传输代理),也就是邮件服务提供商。我们的邮件是从126.com发送的,所以先被投递到网易提供的MTA,再由网易的MTA发到对方服务商,也就是新浪的MTA。
邮件到达新浪的MTA后,由于对方使用的是新浪的邮箱,因此新浪的MTA会将邮件投递至最终的目的地MDA(Mail Delivery Agent,邮件投递代理)。
邮件到达MDA之后就会存放在某个服务器,我们将这个长期保存邮件的地方称为电子邮箱。
另外使用python发送邮件时需要注意:
smtplib
python对SMTP支持的有smtplib和email2个模块,其中email负责构造邮件,smtplib负责发送邮件。
yagmail
yagmail是一个第三方模块,点击yagmail可以在github查看该项目使用说明及源码。
使用yagmail发送邮件简单方便,免去了构建邮件内容的繁琐步骤。
安装
python2和python3的安装如下
pip install yagmail
pip3 install yagmail
使用
实例化SMTP()类,然后调用send()方法即可。
更多使用可以参考github项目主页说明。
实例
import yagmail
args = {
"user": "[email protected]",
"password": "xxxx",
"host": "smtp.163.com",
"port": "465"
}
emailList = ['[email protected]']
yag = yagmail.SMTP(**args)
yag.send(to=emailList, subject="python邮件", contents="Thanks for your python email!", attachments="__init__.py")
另外,此处的contents可以传递列表,它可以自动识别文件格式。例如:
上面发送修改为如下格式
yag.send(to=emailList, subject="python邮件", contents=["Thanks for your python email!","__init__.py"])
最后收到邮件效果和上面的代码一致。可自动将init.py识别为附件并添加。