python smtp QQ邮箱 发送附件

本文介绍了一种自动化测试完成后,通过Python脚本自动发送带有测试报告附件的邮件的方法。该方法利用smtplib和email库实现邮件的发送,并通过设置SMTP服务器及登录信息完成邮件的配置。

质己跑完case 会得到的一个测试报告,然后我要把这个测试报告通过qq邮箱发送到接受人那里,闲话少说

mailto_list = ['caoyong@zlddata.cn']           # 收件人(列表)
mail_host = "smtp.qq.com"            # 使用的邮箱的smtp服务器地址,这里是qq的smtp地址
mail_user = "xx"                           # 用户名
mail_pass = "xxxx"                             # 密码
mail_postfix = "qq.com"  # 邮箱的后缀


def send_mail(to_list, sub, content):
    me = mail_user+"@"+mail_postfix
    new_report = [test_report_path() + "\\result.html", "result.html"]
    print(new_report[0])
    msg = MIMEMultipart()
    msg['Subject'] = sub                        # 主题
    msg['From'] = me
    msg['To'] = ";".join(to_list)                # 将收件人列表以‘;’分隔
    # 文本内容
    text_content = MIMEText(content)
    msg.attach(text_content)
    # 附件
    attachment = MIMEApplication(open(new_report[0], 'rb').read())
    attachment.add_header("Content-Disposition", "attachment", filename=new_report[1])
    msg.attach(attachment)
    try:
        server = smtplib.SMTP(mail_host, timeout=30)
        server.set_debuglevel(1)
        server.starttls()
        server.login(mail_user, mail_pass)               
        server.sendmail(me, to_list, msg.as_string())
        server.quit()
        return True
    except Exception as e:
        print(str(e))
        return False
for i in range(1):                             # 发送1封,上面的列表是几个人,这个就填几
    if send_mail(mailto_list, "测试报告", 'test'):  # 邮件主题和邮件内容
        print("done!")
    else:
        print("failed!")

皆大欢喜

强调一点

使用标准的25端口连接SMTP服务器时,使用的是明文传输,发送邮件的整个过程可能会被窃听。要更安全地发送邮件,可以加密SMTP会话,实际上就是先创建SSL安全连接,然后再使用SMTP协议发送邮件。只需要在创建SMTP对象后,立刻调用starttls()方法,就创建了安全连接。官方文档说需要再跳用ehlo()方法,但是我这里没有调用就成功了

SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议,它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。使用 Python 通过 SMTP 协议在 QQ 邮箱发送附件,可参考以下代码实现: ```python from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import smtplib def send_mail(): mail_host = "smtp.qq.com" # SMTP 服务器地址 mail_sender = "******@qq.com" # 发送人账号 mail_receiver = "*****@qq.com" # 接收人账号 msg = MIMEMultipart() msg["Subject"] = "带有附件的邮件" msg["From"] = mail_sender # 发送人 msg["To"] = mail_receiver # 接收人账号 # 邮件正文 content = ''' 这是一封带有附件的邮件... 有两个附件 ''' msg.attach(MIMEText(content, 'plain', 'utf-8')) # 构造附件 html 文件 att2 = MIMEText(open('report.html', 'rb').read(), 'base64', 'utf-8') att2["Content-Type"] = 'application/octet-stream' att2["Content-Disposition"] = 'attachment; filename="report.html"' msg.attach(att2) # 发送邮件 s = smtplib.SMTP('smtp.qq.com') # 实例化对象 s.connect('smtp.qq.com', 25) # 连接 QQ 邮箱服务器,端口号为 25 s.login(mail_sender, "gxxinpgfgxnwhiej") # 登录邮箱,gxxinpgfgxnwhiej 为授权码,不是登录密码 s.sendmail(mail_sender, [mail_receiver], msg.as_string()) s.quit() send_mail() ``` 此代码通过 Python 的`smtplib`库使用 SMTP 协议,结合`email`模块构建邮件内容并添加附件,实现向 QQ 邮箱发送附件邮件的功能。注意,代码中的`******@qq.com`、`*****@qq.com`和`gxxinpgfgxnwhiej`需要替换为真实的发送邮箱账号、接收邮箱账号和发送邮箱的授权码。授权码可在 QQ 邮箱的设置中开启 SMTP 服务后获取 [^1][^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值