python发送邮件
发布日期:2021-10-31 07:31:31
浏览次数:12
分类:技术文章
本文共 1633 字,大约阅读时间需要 5 分钟。
python发送邮件
python中邮件发送可以使用smtplib模块,也可以使用第三方的yagmail模块。
邮件收发简介
- 假如从xx@126.com发送一份邮件至xx@sina.com。首先使用Foxmail等软件写好邮件发送,这些软件称为MUA(Mail User Agent,邮件用户代理)。
邮件从MUA发出去之后,先发到MTA(Mail Transfer Agent,邮件传输代理),也就是邮件服务提供商。我们的邮件是从126.com发送的,所以先被投递到网易提供的MTA,再由网易的MTA发到对方服务商,也就是新浪的MTA。
邮件到达新浪的MTA后,由于对方使用的是新浪的邮箱,因此新浪的MTA会将邮件投递至最终的目的地MDA(Mail Delivery Agent,邮件投递代理)。邮件到达MDA之后就会存放在某个服务器,我们将这个长期保存邮件的地方称为电子邮箱。
- 编写程序发送邮件本质就是编写MUA把邮件发送到MTA;收取邮件就是编写MUA从MDA收邮件。
- 发邮件时,MUA和MTA使用额协议就是SMTP(Simple Mail Transfer Protocol),后面的MTA到另一个MTA也是使用SMTP协议。
- 收邮件时,MUA和MDA使用的协议有两种,POP(Post Office Protocol),目前版本是3,称为POP3。IMAP(Internet Message Access Protocol)目前版本是4,优点是不但能收取邮件,还可以直接操作MDA上存储的邮件,比如从收件箱移动到垃圾箱等。
另外使用python发送邮件时需要注意:
- 大多数邮件服务商需要手动打开SMTP发信和POP收信功能。否则只能网页登录。
- 邮件客户端大多数要求使用客户端授权密码,而不是邮箱密码。需要网页登录设置。
smtplib
python对SMTP支持的有smtplib和email2个模块,其中email负责构造邮件,smtplib负责发送邮件。- email构造邮件
- smtplib发送邮件
实例
yagmail
yagmail是一个第三方模块,点击yagmail可以在github查看该项目使用说明及源码。 使用yagmail发送邮件简单方便,免去了构建邮件内容的繁琐步骤。安装
python2和python3的安装如下pip install yagmailpip3 install yagmail
使用
实例化SMTP()类,然后调用send()方法即可。 更多使用可以参考github项目主页说明。实例
import yagmailargs = { "user": "xxxx@163.com", "password": "xxxx", "host": "smtp.163.com", "port": "465"}emailList = ['xxx@qq.com']yag = yagmail.SMTP(**args)yag.send(to=emailList, subject="python邮件", contents="Thanks for your python email!", attachments="__init__.py")
- to:收件人,多个收件人可以通过列表方式传递。
- subject:邮件主题。
- contents:邮件正文。
- attachments:附件,可以使用绝对路径。此处表示该文件夹和代码在同一目录。
另外,此处的contents可以传递列表,它可以自动识别文件格式。例如:
上面发送修改为如下格式yag.send(to=emailList, subject="python邮件", contents=["Thanks for your python email!","__init__.py"])
最后收到邮件效果和上面的代码一致。可自动将init.py识别为附件并添加。
转载地址:https://blog.csdn.net/weixin_39934221/article/details/80603918 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月16日 12时53分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
目标检测中的mAP计算(包括代码)
2019-04-26
python fire使用指南
2019-04-26
c++ ADL(Argument-Dependent Lookup)查找
2019-04-26
寻找数组中第n大的元素
2019-04-26
python快速读取非常大的文件
2019-04-26
python递归解析JSON(目前最好的方案)
2019-04-26
Hash表的理论基础与具体实现(详细教程)
2019-04-26
ResNet理论基础与具体实现(详细教程)
2019-04-26
FPN(特征图金字塔网络)理论基础与具体实现
2019-04-26
Leetcode 1:两数之和(最详细解决方案!!!)
2019-04-26
Leetcode 2:两数相加(最详细解决方案!!!)
2019-04-26
Leetcode 283:移动零(最详细解决方案)
2019-04-26
Leetcode 27:移除元素(最详细解决方案!!!)
2019-04-26
什么是事务?事务的ACID特性
2019-04-26
Leetcode 26:删除排序数组中的重复项(最详细解决方案!!!)
2019-04-26
Leetcode 80:删除排序数组中的重复项 II(最详细解决方案!!!)
2019-04-26
Leetcode 75:分类颜色(最详细解决方案!!!)
2019-04-26
Leetcode 88:合并两个有序数组(最详细解决方案!!!)
2019-04-26
Leetcode 167:两数之和 II - 输入有序数组(最详细解决方案!!!)
2019-04-26
Leetcode 344:验证回文串(最详细解决方案!!!)
2019-04-26