Python自动化测试发送邮件太麻烦?!一起聊一聊 Python 发送邮件的3种方式

本文详细介绍了使用Python发送邮件的三种方法,包括smtplib、zmail和yagmail库的使用技巧,对比了各自的优缺点,适用于自动化测试场景。

1. 前言

 

发送邮件,我们在平时工作中经用到,做为测试人员,在自动化测试中用的也比较多,需要发送邮件给某领导

 SMTP是Python默认的邮件模块,可以发送纯文本、富文本、HTML 等格式的邮件

                                                      

今天我们来说一说Python 发送邮件的 3 种方式

2. 开启邮箱SMTP服务和获取授权码

登录 QQ 邮箱为例,我们需要开启 SMTP 服务,登录邮箱依次点击设置-账户

开启SMTP

然后,生成授权码

注:

需要开启POP3/SMTP服务

授权码做为邮箱密码

1. 方式一:smtplib

smtplib是 Python 自带的依赖库,可以直接导入使用,通过邮箱账号、授权码、邮箱服务器地址初始化一个 SMTP 实例,然后进行连接

初学者感觉这个会挺复杂,请继续往下看

1.1发送纯文本邮件

 

运行结果:

注:当前发送邮件个人不推荐使用,所以只演式一种发送纯文本邮件

2. 方式二:zmail

由于SMPT太过于麻烦复杂,所以就用zamil发送邮件试试。

zmail模块只支持Python3模块,该模块为第3方模块,需自行安装(pip install zmail)


使用 Zmail 发送接收邮件方便快捷,不需手动添加服务器地址、端口以及适合的协议,可以轻松创建 MIME 对象和头文件
注意:Zmail 仅支持 Python3,不支持 Python2

#!/usr/bin/python3

import zmail


def send_mail():
    # 定义邮件
    mail = {"subject": "接口测试报告",# 任一填写
            'content_text': '手机号归属地_API自动化测试报告',# 任一填写
            # 多个附件使用列表
            "attachments": "E:/report/result.html"
            }
    # 自定义服务器
    server = zmail.server("发送人邮箱.com",
                          "QQ邮箱是用授权码",
                          smtp_host="smtp.qq.com",
                          smtp_port = 465)
    # 发送邮件
    server.send_mail("收件人QQ邮箱", mail)

try:
    send_mail()
except FileNotFoundError:
    print("未找到文件")
else:
    print("发送成功")

3. 方式三:yagmail

他们都说yagmail 只需要三行代码,就可以实现发送邮件,爽歪歪!

相比 zmail,yagmail 实现发送邮件的方式更加简洁优雅

首先,安装依赖库(pip install yagmail)

发送邮件有三个步骤:

1、连接服器(类似你先要登录邮箱)

2、编辑邮件内容和主题

3、发送邮件

#!/usr/bin/python3

import yagmail


# 定义用户名、授权码、服务器地址且连接服务器

mail_server = yagmail.SMTP(user='发件人邮箱', passwd='授权码', host='smtp.qq.com')

# 发送对象列表
Email_to = ['收件人邮箱']
subject = '任一填写'
Email_text = "任一填写内容"
# 多个附件用逗号隔开
attachments = ['html报告目录地址']

# 发送邮件
mail_server.send(Email_to, subject, Email_text, attachments)

6. 最后

总结了 Python3种发送 邮件的方式,实际项目中,更推荐使用后两种方式


 如果对软件测试、接口测试、自动化测试、持续集成、面试经验。感兴趣可以进到893694563,群内会有不定期的分享测试资料。还会有技术大牛,业内同行一起交流技术

<think>好的,用户问的是如何用Python和C++自动发送邮件。我需要先分别回答这两个语言的实现方法。首先Python的话,我记得可以用smtplib库,可能还需要email库来构建邮件内容。步骤应该是连接到SMTP服务器,登录,然后发送邮件。需要提醒用户注意邮箱的SMTP服务是否开启,以及使用正确的端口和服务器地址。 然后是C++,可能有点复杂,因为标准库没有内置的邮件发送功能。可能需要用第三方库,比如libcurl,或者使用系统调用。不过libcurl支持SMTP吗?我记得libcurl主要支持HTTP,FTP等,SMTP可能需要其他库。或者可以用Windows的MAPI,或者Linux下的sendmail。或者使用Boost.Asio手动实现SMTP协议,但这样比较麻烦。需要给出几种不同的方法,并说明各自的优缺点。 用户可能的需求是自动化发送邮件,可能是用于通知、监控或者定时任务。需要确保代码示例的安全性,比如密码处理,是否使用环境变量或者加密。另外,可能需要处理附件、HTML内容等,但用户的问题可能暂时不需要这些,但可以稍微提下。 相关问题方面,Python部分可能会问如何添加附件,或者使用TLS/SSL加密。C++可能问是否有更简单的库,或者如何处理错误。另外,可能涉及跨平台的问题,比如C++代码在不同系统下的兼容性。还有安全性方面,比如如何安全存储邮箱密码。 需要检查示例代码是否正确,比如Python中是否正确导入库,是否关闭连接,C++的示例是否需要错误处理。可能用户对C++部分不太熟悉,所以需要给出明确的步骤和可能的依赖库安装方法。比如在C++中使用libcurl的话,需要安装开发库,或者使用其他推荐库。 最后,确保相关问题覆盖用户可能遇到的常见问题,比如发送失败、如何配置服务器、处理不同邮件服务商等。还要注意格式是否符合要求,比如代码块是否用```python和```c++包裹,相关问题是否在末尾正确列出。</think>以下是使用Python和C++自动发送邮件的实现方法: Python实现(使用smtplib): ```python import smtplib from email.mime.text import MIMEText from email.header import Header # 邮箱配置 smtp_server = &#39;smtp.example.com&#39; sender = &#39;your_email@example.com&#39; receiver = &#39;recipient@example.com&#39; password = &#39;your_password&#39; # 创建邮件内容 message = MIMEText(&#39;这是邮件正文&#39;, &#39;plain&#39;, &#39;utf-8&#39;) message[&#39;From&#39;] = Header(sender) message[&#39;To&#39;] = Header(receiver) message[&#39;Subject&#39;] = Header(&#39;自动发送测试&#39;) # 发送邮件 try: server = smtplib.SMTP(smtp_server, 587) server.starttls() server.login(sender, password) server.sendmail(sender, [receiver], message.as_string()) print("邮件发送成功") except Exception as e: print(f"发送失败: {e}") finally: server.quit() ``` C++实现(使用libcurl): ```cpp #include <curl/curl.h> #include <stdio.h> int main(void) { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { struct curl_slist *recipients = NULL; curl_easy_setopt(curl, CURLOPT_URL, "smtp://smtp.example.com:587"); curl_easy_setopt(curl, CURLOPT_MAIL_FROM, "<your_email@example.com>"); recipients = curl_slist_append(recipients, "<recipient@example.com>"); curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients); curl_easy_setopt(curl, CURLOPT_USERNAME, "your_email@example.com"); curl_easy_setopt(curl, CURLOPT_PASSWORD, "your_password"); curl_easy_setopt(curl, CURLOPT_READDATA, stdin); curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L); res = curl_easy_perform(curl); if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); curl_slist_free_all(recipients); curl_easy_cleanup(curl); } return 0; } ``` 注意事项: 1. 需要启用邮箱的SMTP服务(通常在邮箱设置中开启) 2. 部分邮箱需要使用授权码代替密码 3. 需要配置正确的SMTP服务器地址和端口(587/TLS或465/SSL)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上开始

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值