使用Python发送邮件需要安装一些第三方模块,具体之前文章Python 第三方模块和安装方法有介绍,这里不再复述。
更多点击:Python学习日志目录
如果没有安装过的话,可以使用下面命令进行安装本文用到的 yagmail 模块:
pip install yagmail -i https://pypi.douban.com/simple
使用Python发送邮件之前还需要有一个支持POP3、SMTP和IMAP协议的邮箱,然后开通协议,本文是发送邮件,所以开通SMTP协议即可。
如果你使用的是网易或者腾讯邮箱,开通邮箱的POP3、SMTP和IMAP协议,这时候网易或腾讯会给你一个安全码,使用这个安全码当密码就可以发送邮件了。文末附有腾讯和网易开通安全码的方法,以及对应SMTP服务器地址。
如果我们只是想发邮件的话,其实可以用Python命令行存入邮箱和密码(腾讯和网易使用安全码代替密码),这样之后再调用这个邮箱的话,就不用输入密码了。
首先打开命令行,输入 python 回车,进入Python命令行;
然后输入 import yagmail 回车,引入yagmail模块;
然后输入 yagmail.register('你的邮箱地址','密码或安全码') 回车。
想要发送邮件的话,新建一个.py文件,注意文件名不能用yagmail或者email等,否则会出现错误。比如我明明为 sent_mail.py,这样就不容易报错。
输入下面内容:
import yagmail yag = yagmail.SMTP(user='[email protected]',host='smtp.163.com') # 后面的host取决于你使用哪家的邮箱,后面我会附上不同邮箱对应的smtp服务器 contents = ['这份邮件你收到了吗?','收到请回复\n Email by Python'] # 邮件正文赋值给 contents 变量,这个变量名可以自定义的 yag.send('[email protected]','这是一封测试邮件',contents) # 前面填写想要发送到的邮箱,中间写邮件主题,后面是内容变量。
运行效果如图:
发送带附件的邮件
直接在正文后面添加附件的路径即可。
import yagmail yag = yagmail.SMTP(user='[email protected]',host='smtp.163.com') contents = ['你好,把附件发给你查收一下。', '收到请回复\n by <a href="https://www.icoa.cn">iCoA.cn</a>', 'D:\\Temp\\demo.zip'] # 把 demo.zip 放进邮件附件 yag.send('[email protected]','这是一封带附件的邮件',contents)
运行效果如图:
大家看到了,邮件内容支持HTML代码。
正文中插入图片
既然邮件可以插入附件,那么同样可以把附件中的图片,插入邮件正文中。
import yagmail yag = yagmail.SMTP(user='[email protected]',host='smtp.163.com') contents = ['你好,明天在哪儿吃饭啊?', '收到请回复\n by <a href="https://www.icoa.cn">iCoA.cn</a>', yagmail.inline('logo.png')] # 把当前目录下logo.png插入到正文 yag.send('[email protected]','这是一封正文带图片的邮件',contents)
运行效果如图:
群发邮件
群发邮件,只需要在填写收件人邮箱的地方,以列表的形式写上更多收件人邮箱就可以了。
import yagmail yag = yagmail.SMTP(user='[email protected]',host='smtp.163.com') contents = ['你好,明天在哪儿吃饭啊?'] yag.send(['[email protected]','[email protected]','[email protected]'],'群发邮件测试',contents)
更多Python学习日志,点击:Python学习日志目录
附1:下面列举常用邮箱对应SMTP和POP3服务器地址:
QQ邮箱:
smtp.qq.com pop.qq.com
网易邮箱不同域名也是不同的:
163邮箱:
smtp.163.com pop.163.com
126邮箱:
smtp.126.com pop.126.com
yeah.net邮箱:
smtp.yeah.net pop.yeah.net
附2:QQ邮箱如何设置SMTP服务,以及如何获取授权码的方法:
腾讯官方文档:https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
打开QQ邮箱,点击 设置 → 账户:
下拉到 这个位置,将 POP3/SMTP服务 后面点击开启,然后点击下面的 生成授权码。
然后会让你用邮箱绑定的手机号,发一个短信到指定号码,发完之后,点击我已发送即可。
这时候会给你一串字符,这个就可以作为密码使用。
附3.网易邮箱获取安全码的方法
网易邮箱点击上面的 设置 → POP3/SMTP/IMAP,具体方法跟腾讯邮箱差不多,本文不再重复了。
记得勾选上这两个选项