目录
- 1 前言
- 2 准备工作
- 2.1 电子邮件的基础知识。
- 2.2 python邮件库
- 2.3 邮箱设置
- 3 python实现邮件自动发送
- 3.1 SMTP()和send()方法介绍
- 3.2 python实现实例
- 参考信息
1 前言
python功能强大,可以实现我们日常办公的很多任务。诸如批量处理word,excel,pdf等等文件,今天先主要对如何用python来实现邮件的发送作一总结。
2 准备工作
2.1 电子邮件的基础知识。
电子邮件通俗讲就是将我们的实体信件网络化,借助互联网来发送和接收。
以QQ邮箱的发送邮件界面为例,其中包括收件人(抄送人、密送人)、主题、附件、正文、发件人等部分。
2.2 python邮件库
使用python来实现自动发送邮件的功能,本质上也是模拟我们实操的这一过程,只是用代码模拟了这一过程。python中内置了邮件处理的库——smtplib,不过推荐使用yagmail库,其底层仍然使用的smtplib,其提供的借口更适合日常的简单使用。
2.3 邮箱设置
想要利用python实现邮件自动发送,首先必须开通自己邮箱的SMTP服务。一般在设置中就可以找到,如下例所示。
开启SMTP服务后,就可以获取到当前账户的授权码(该授权码一定要记得复制、保存,这会在程序实现的过程中用到),如下图所示。
3 python实现邮件自动发送
实现邮件的自动发送主要用到yagmail模块中的SMTP()方法和send()方法。实现邮件的发送过程可以概括为三步:
- 调用SMTP()方法,创建SMTP实例;
- 调用send()方法,执行发送邮件操作;
- 断开连接。
3.1 SMTP()和send()方法介绍
SMTP()方法常用的参数如下:
- user=“发件人邮箱地址”
- password=“授权码”
- host=“SMTP服务器域名”
常见的电子邮件服务商的SMTP服务器域名:
- 163邮箱 :smtp.163.com
- 126邮箱 :smtp.126.com
- qq邮箱 :smtp.qq.com
- Gmail邮箱 :smtp.gmail.com
- Outlook邮箱;smtp.office365.com
send()方法常用的参数如下:
- to=收件人邮箱地址,
- subject=邮件主题,
- contents=正文,
- attachments=附件存储路径,
- cc=抄送人邮箱地址,
- bcc=秘密抄送人邮箱地址,
当收件人有多个时,使用列表存储即可;当正文有多段时,也用列表存储即可,其他诸如附件、抄送人等有多个时,同样用列表存储即可。
3.2 python实现实例
第一个实例,自己给自己邮箱发送一个‘hello’信息,测试一下。
import yagmail
mail = yagmail.SMTP("14****03@qq.com","授权码","smtp.qq.com")
mail.send("14****03@qq.com","测试邮件",'hello')
mail.close()
邮箱显示结果如下:
第二个实例,测试给邮箱发送多段信息,包括图片,以及发送附件信息到邮箱。
import yagmail
mail = yagmail.SMTP("14****03@qq.com","授权码","smtp.qq.com")
subject = '测试正文和附件结果'
contents = ['各位领导:','请查收如下开会通知信息。详情可参考图片。',
yagmail.inline(r"C:\Users\mu\Pictures\Camera Roll\Sni22.jpg"),
'<a href="www.baidu.com">具体查询网址']
attachments = r"C:\Users\mu\Pictures\Camera Roll\WIN_20221212_21_41_11_Pro.jpg"
mail.send( "14****03@qq.com",subject,contents,attachments)
mail.close()
收件邮箱显示结果如下: