前言

之前写一个监测网站更新的脚本时,需要让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)

中间定义了一个输入主题,内容然后发送邮件的函数。通过这个函数就能发邮件啦!

注意:邮件有可能被收件方邮箱归入垃圾邮件,一般还要设置一下白名单。