用Python来编写自动化是一种挺有趣的事情,上次提过通过定位元素、切换窗口等自动登录博客园,今天给大家讲讲用Python来自动发送邮件

首先呢,先导入email框架,具体如下

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from email.mime.base import MIMEBase
from email import encoders
from email.mime.multipart import MIMEMultipart

其次,登录邮箱来确定SMIP、POP3口令,这个下面要用到

接下来呢,你要准备好自己的账号密码以及收件人的邮箱账号,以及要发送的邮件

最后就是根据基本的框架结构,对着数据进行输入

具体操作如下:

import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
from email.mime.base import MIMEBase
from email import  encoders
from  email.mime.multipart import MIMEMultipart
SMIP=" "
POP3=" "
# 发件人邮箱账号
my_sender=" "
# 发件人邮箱密码
my_pass=POP3
# 收件人邮箱账号
my_user=" "
def mail():
    ret=True
    try:
        # 实例化添加邮件附件对象
        msg=MIMEMultipart()
        # 括号里的对应发件人邮箱昵称、发件人邮箱账号
        msg["from"]=formataddr([" 发件人邮箱昵称",my_sender])
        # 括号里的对应收件人邮箱昵称、收件人邮箱账号
        msg["to"]=formataddr(["收件人邮箱昵称",my_user])
        # 邮件的主题,也可以说是标题
        msg["subject"]="自动化邮件"
        # MIMEText(邮件正文描述, 邮件类型, 编码)
        msg.attach(MIMEText('今天的自动化报告', 'html', 'utf-8'))
        # 添加邮件
        with open("D:\oy.test\自动化\\web_test.html","rb")as a:
            # 设置附件的MIME和文件名
            mime=MIMEBase("image","html",filename="web_test.html")
            # 添加协议的头部信息
            mime.add_header("Content-Disposition","attachment",filename="web_test.html")
            mime.add_header("Content-ID","<0>")
            mime.add_header("X-Attachment-id","0")
            # 读取附件内容
            mime.set_payload(a.read())
            # 用Base64编码
            encoders.encode_base64(mime)
            # 添加到MIMEMultipart
            msg.attach(mime)
            server = smtplib.SMTP_SSL("smtp.qq.com", 465)
            # 发件人账号,密码
            server.login(my_sender, my_pass)
            # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
            server.sendmail(my_sender, [my_user], msg.as_string())
            server.quit()
    except Exception as e:
        print(e)
        ret = False
        return ret
if __name__ == "__main__":
    ret = mail()
    if ret:
        print("发送成功")
    else:
        print("发送失败")