Python小功能开发(二):基于SMTP协议自动发送邮件

开发背景

程序运行过程产生意外情况,如何及时通知到维护人员呢?可以在代码中嵌入自动发送邮件的模块,这样有意外情况就会发送邮件到维护员邮箱。(短信、电话需要经过运营商很麻烦,QQ、微信腾讯方面管控很严格,邮箱相对比较容易)

运行环境

Python=3.8
库文件(发送内容涉及中文,建议增加# coding:utf-8编码)

# coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header

工作流程

1、申请邮箱SMTP服务(以QQ邮箱为例)

①登录QQ邮箱,点击邮箱设置——账号
在这里插入图片描述
②下拉进入如下菜单,确认服务状态为开启,点击管理服务,找到生成授权码按钮,按提示申请一组授权码(保存好备用)
在这里插入图片描述
在这里插入图片描述

2、代码实现

①构建邮件内容:

class Mail:
    def __init__(self):
        # 第三方 SMTP 服务

        self.mail_host = "smtp.qq.com"  # 设置服务器:这个是qq邮箱服务器,复制就行
        self.mail_pass = "xbxxxxxxxei"  # 刚才我们获取的授权码
        self.sender = 'suxxxx@xx.com'  # 你的邮箱地址

        self.receivers = []  # 收件人的邮箱地址,可设置为你的QQ邮箱或者其他邮箱,可多个
        self.mail_content = ''

    def send(self,content):

        # content = self.mail_content  # 邮件内容
        # content += 'Hello:这是一个测试邮件\r\n'
        # content += '<p>再见</p>'

        message['From'] = Header("'=?UTF-8?B?5Zif5Zif' <{}>".format(self.sender)) # 发件人名称
        message['To'] = Header("'=?UTF-8?B?5ZW+5ZW+' <{}>".format(self.receivers))  # 收件人名称
        subject = content #邮件主题
        message['Subject'] = Header(subject, 'utf-8')
        try:
            smtpObj = smtplib.SMTP_SSL(self.mail_host, 465)
            smtpObj.login(self.sender, self.mail_pass)
            smtpObj.sendmail(self.sender, self.receivers, message.as_string())
            smtpObj.quit()
            print('邮件发送成功')
        except smtplib.SMTPException as e:
            print('邮件发送失败',self.receivers,e)

②定义发送邮件函数

def send_mail(content,re_mail):
    mail = Mail()
    if re_mail != '':
        mail.receivers = [re_mail]
    mail.send(content)

③主函数(形如发送人、接收人等信息都写在①里面(偷个懒),有需要的朋友可以自行修改)

if __name__ == '__main__':
    content = 'hanshu ceshi'
    send_mail(content)

以上就完成自动发邮件的能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值