python自动化--邮箱发送

学习笔记

1、导入邮箱发送所需要的包

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header

2、初始化邮箱配置

class AutoEmail(object):
    def __init__(self):
        self.mailserver = "******"  # 邮箱服务器地址
        self.username_send = '******'  # 邮箱用户名
        self.password = '******'  # 邮箱密码:需要使用授权码
        self.username_recv = '******'  # 收件人,多个收件人用逗号隔开
        # 生成一个空的带附件的邮件实例
        self.message = MIMEMultipart()

3、定义一个发送邮件的函数

本例以QQ邮箱,发送xlsx文件为模板

    def send_email(self):
        # 将正文以text的形式插入邮件中
        self.message.attach(MIMEText('报告', 'plain', 'utf-8'))
        # 生成发件人名称(这个跟发送的邮件没有关系)
        self.message['From'] = Header('工具人', 'utf-8')
        # 生成收件人名称(这个跟接收的邮件也没有关系)
        self.message['To'] = Header('cc', 'utf-8')
        # 生成邮件主题
        self.message['Subject'] = Header('日报', 'utf-8')
        # 读取附件的内容 path是excel文件路径
        att1 = MIMEText(open(path,'rb').read(), 'base64', 'utf-8')
        att1.add_header("Content-Type",'application/octet-stream')
        # 生成附件的名称
        att1.add_header("Content-Disposition",'attachment',filename='测试.xlsx')
        # 将附件内容插入邮件中
        self.message.attach(att1)
        smtp = smtplib.SMTP_SSL('smtp.qq.com', port=465)  # QQ邮箱的服务器和端口号
        smtp.login(self.username_send, self.password)  # 登录邮箱
        # 参数分别是发送者,接收者,第三个是把上面的发送邮件的内容变成字符串
        smtp.sendmail(self.username_send, self.username_recv, self.message.as_string())
        smtp.quit()  # 发送完毕后退出smtp
        print('success')

4、运行文件

if __name__ == '__main__':
    autoemail = AutoEmail()
    autoemail.send_email()

5、小结

邮件有可能被当做垃圾邮件处理,需要做好标签避免被过滤了。

上一篇:16.2.1 连接到 SMTP 服务器


下一篇:python发送邮件程序