版本
python 3.9
yagmail: 0.15.293
smtplib 和 yagmail说明
smtplib是python标准库中的一个模块,它是基于SMTP协议自动发送邮件,在使用之前,需要在邮箱设置中打开SMTP协议,比如qq邮箱:
yagmail是一个第三方库,它封装了smtplib,用过smtplib发送邮件的人才可以知道yagmail是有多么好用!API文档
yagmail详解
这个方法确实简单,可以直接看范例,根据需要删减就好了
邮箱登录
在登录邮箱之前一定要打开邮箱设置中的SMIP协议,如上述 “smtplib 和 yagmail说明”
yag = yagmail.SMTP(user="邮箱地址", password="授权码", host='smtp.qq.com')
# 这里是以qq邮箱为例 不同的邮箱会有不同的host 甚至需要设置端口port(默认465) 需在邮箱设置中查看
编辑邮件内容
可以根据以下编辑邮件内容,然后调用send函数就完成了邮件发送。
send函数的部分参数详解
1. 收件人
它可以有四种数据格式,当收件人只有一个时,可以是字符串,如:
to = "someone@mail.com"
单个或多个收件人时,可以是列表或者元组,如:
to = ["receiver1@mail.com", "receiver2@mail.com"]
to = ("receiver1@mail.com", "receiver2@mail.com")
还可以是字典:
to = {
'aliased@mike.com': 'Mike',
'aliased@fred.com': 'Fred'
}
2. 正文
正文可以添加三种格式:文本,图片, html
另外它还有一种yagmail.raw()的方法,用来确保将字符串视为文本,用处不是很大。
contents = [
"文本",
yagmail.inline(r"path.jpg"), # 内嵌图片
"<h1>html</h1>", # html格式
]
范例
import yagmail
# 邮箱登录
yag = yagmail.SMTP(user="邮箱地址", password="授权码", host='smtp.qq.com') # 以qq邮箱为例
# 编辑邮件内容
to = ["收件人1", "收件人2"]
subject = "标题"
contents = [
"文本",
yagmail.inline(r"图片本地路径"), # 内嵌图片
"<h1>html</h1>", # html格式
]
attachments = [r"附件本地路径1", r"附件本地路径2"]
cc = ["抄送人1", "抄送人2"]
bcc = ['密送人1', "密送人2"]
# 发送邮件
yag.send(to, subject, contents, attachments, cc, bcc)
# 无法发送的电子邮件将存储在 self.unsent 使用此函数可尝试再次发送这些
yag.send_unsent()
# 关闭与SMTP服务器的连接
yag.close()