前言
之前写一个监测网站更新的脚本时,需要让Python脚本检查到更新的时候自动给我的QQ邮箱发邮件。在网上找了很久也没解决这个问题。难点在于找到一个合适的简易邮件服务器。后来偶然发现163邮箱的简易邮件服务器就可以,便总算突破了难关,也实现了python自动发邮件的功能。
163简易邮件服务器
进入你的163邮箱,点开上方菜单栏中的设置,找到POP3/SMTP/IMAP。
点开后,看到163的简易邮件服务器是stmp.163.com
左侧进入客户端授权码选项卡,开启授权码,设置自己的授权码,类似密码。
Python 代码
#导入需要使用的模块
import smtplib
from email.mime.text import MIMEText
#定义发送邮件的函数,传入title,article,receivers参数
def send_mail(title,article,receivers):
# 第三方 SMTP 服务
mail_host = "smtp.163.com" # SMTP服务器,这里以163的smtp服务器为例
mail_user = "example" # 用户名
mail_pass = "******" # 授权码
sender = 'example@163.com' # 发件人邮箱(最好写全, 不然会失败),以163邮箱为例
content = article
message = MIMEText(content, 'plain', 'utf-8') # 内容, 格式, 编码
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
message['Subject'] = title
try:
smtpObj = smtplib.SMTP_SSL(mail_host, 465) # 启用SSL发信, 端口一般是465
smtpObj.login(mail_user, mail_pass) # 登录验证
smtpObj.sendmail(sender, receivers, message.as_string()) # 发送
print("mail has been send successfully.")
except smtplib.SMTPException as e:
print(e) #如果发送失败打印错误代码,可以通过错误代码在网上查询错误原因
receivers = ['re1@qq.com','re2@qq.com','re3@qq.com'] # 接收邮件的邮箱列表,可设置为你的QQ邮箱或者其他邮箱
send_mail('主题','内容',receivers)
中间定义了一个输入主题,内容然后发送邮件的函数。通过这个函数就能发邮件啦!
注意:邮件有可能被收件方邮箱归入垃圾邮件,一般还要设置一下白名单。