需要什么库?
PyEmail
这个库能够实现基于SMTP协议自动发送邮件的功能
参考:Python SMTP发送邮件 | 菜鸟教程 (runoob.com)
需要哪些准备?
一个开启SMTP服务的邮箱
这里以163网易邮箱为例:
首先,需要拥有一个163网易邮箱(其它邮箱也可以)
然后,开启邮箱的smtp服务
开启后会获得一个授权码,这个码很重要,一定要保存好!!!
了解该邮箱smtp服务器的地址及其端口信息
例如,网易163邮箱相关信息为:
服务器名称 | 服务器地址 | SSL协议端口号 | 非SSL协议端口号 |
---|---|---|---|
IMAP | imap.163.com | 993 | 143 |
SMTP | smtp.163.com | 465/994 | 25 |
POP3 | pop.163.com | 995 | 110 |
其它邮箱相关信息可自行百度
这里我们使用smtp协议,所以选用第二行数据
一个或多个接收邮件的邮箱
注意,自动发邮件是可以群发的,所以也可能是多个。
并且,该方式发送的邮件可能会被接收方归为垃圾邮件,这时需要将发邮件的邮箱设置为白名单
代码实现
import smtplib
from email.mime.text import MIMEText
# smtp的服务器地址
mail_host = 'smtp.163.com'
# 邮箱的用户名,例如:[email protected]的用户名就是xxx
mail_user = '***'
# 授权码或密码(网易邮箱是授权码,即开启smtp服务时的授权码。但有些邮箱是密码)
mail_pass = '***'
# 发送方邮箱
sender = '***@163.com'
# 接收方邮箱(一个列表,表示可以群发)
receivers = ['***@***.com']
# 设置邮箱内容(content即为正文),文本格式(plain),编码格式(utf-8)
message = MIMEText('content', 'plain', 'utf-8')
# 设置邮箱标题
message['Subject'] = 'title'
# 设置消息发送方
message['From'] = sender
# 设置消息接收方
# 这个只是消息信息,并不代表只给该接收方发送邮件
# 整个receivers列表的邮箱都能收到邮件
message['To'] = receivers[0]
# 初始化smtp对象
smtpObj = smtplib.SMTP()
# 与服务器构建连接(这个25即为端口号)
smtpObj.connect(mail_host, 25)
# 登录邮箱
smtpObj.login(mail_user, mail_pass)
#发送邮件
smtpObj.sendmail(
sender, receivers, message.as_string())
# 退出
smtpObj.quit()
总结
技术改变生活。自动发送邮件听起来就很酷,而且实用性也非常强。我们可以配合python访问第三方接口的能力甚至配合前端传回来的数据,以该方式给指定人群相关信息提醒。
总之,学以致用应该是每个技术爱好者不断完善自身技术,提升自身能力的信条之一。
但愿我们最终都能成为自己想要成为的样子。
标签:python,smtp,发送,邮箱,mail,com,邮件 From: https://www.cnblogs.com/huang-guosheng/p/16704657.html