一、开通邮箱SMTP服务,并获取 授权码
这个账户是你要使用此邮箱发送邮件的账户,密码不是平时登录邮箱的密码,而是开通 POP3/SMTP
功能后设置的客户端授权密码。
这里以 126
邮箱为例:
二、基本语法
import yagmail
yag = yagmail.SMTP(
user='自己的账号',
password='账号的授权码',
host='smtp.qq.com', # 邮局的 smtp 地址
port='端口号', # 邮局的 smtp 端口
smtp_ssl=False)
yag.send(to='收件箱账号',
subject='邮件主题',
contents='邮件内容')
三、发送文本
下面是以我的 126 邮箱为例, 使用系统密钥环的方式,向我的 163邮箱发送了一封邮件。
import yagmail
# 这个要刚才已经成功开通 SMTP 的邮箱账号
email_user = 'shark@126.com'
# 这个必须是客户端授权码,不是登录密码
email_pwd = 'yourpassword'
# 这个可以从邮件服务提供商获取
email_host = 'smtp.126.com'
# 邮件正文
email_content = """你不是我喜欢的那种人
却慢慢变成
我喜欢的那个人"""
yag = yagmail.SMTP(user=email_user,
password=email_pwd,
host=email_host,
port=25,
smtp_ssl=False)
yag.send(to='docker@163.com',
subject='告白气球',
contents=email_content)
这样就愉快的发送了一封测试邮件到 docker@163.com
的邮箱。
四、发送附件
报错上面的图片到本地,作为测试之用。
这里保存的名称是 告白气球.jpg
发送附件可以使用 attachments
关键字参数,它的值可以是一个具体的有效路径,也可以是包含有效路径的列表。
import yagmail
email_user = 'shark@126.com'
email_pwd ='yourpassword'
email_host = 'smtp.126.com'
email_content = """你不讲真心话
我却在大冒险"""
email_image = "./拥抱.jgp"
yag = yagmail.SMTP(user=email_user,
password=email_pwd,
host=email_host,
port=25,
smtp_ssl=False)
yag.send(to='docker@163.com',
subject='告白气球',
contents=email_content,
attachments=email_image
)
邮件收到显示:
有的时候,发送的邮件会被识别为垃圾邮件
^_^
最简单的还是放在 contents
中。比如:
contents=[email_content, email_image]
在这个列表中,假如是有效的路径,就会作为附件发送,假如不是有效路径,就会作为普通文字发送。
五、发送给多个收件人
给多个人发送是,只需要把关键字参数 to
的值改成列表即可,列表中放入需要通知的人的邮箱地址。
email_users=["user1@163.com", "user2@126.com"]
to=email_users
六、加密邮件内容
希望加密邮件内容,也很简单。
大部分运营上提供的加密邮件接收的端口是 465
import yagmail
email_user = 'shark@126.com'
email_pwd = 'yourpassword'
email_host = 'smtp.126.com'
email_content = """你不讲真心话
我却在大冒险"""
yag = yagmail.SMTP(user=email_user,
password=email_pwd,
host=email_host,
port=465,
smtp_ssl=True)
yag.send(to='docker@163.com',
subject='告白气球',
contents=email_content
)
其实 smtp_ssl=True
这个参数不传也行,因为默认的就是 True