本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。
大家好,今天为大家分享一个实用的 Python 库 - yagmail。
Github地址:https://github.com/kootenpv/yagmail
在自动化办公和数据驱动的工作流程中,自动发送电子邮件是一项常见的任务。yagmail
是一个简单、方便的 Python 库,专门用于简化 Gmail 的邮件发送过程。与使用传统的 smtplib
模块相比,yagmail
提供了更加简洁的接口,自动处理编码问题,并支持发送带有附件、HTML 格式内容的邮件,适合在日常工作中快速构建邮件自动化应用。
安装
yagmail
可以通过 pip
安装:
pip install yagmail
在使用 Gmail 服务之前,还需要确保已启用 Gmail 账户的“低安全性应用访问”功能,或生成应用专用密码。
特性
yagmail
提供了一系列简单的功能,帮助用户快速高效地发送邮件。
-
易于配置:
yagmail
自动处理 Gmail 配置,只需设置一次邮箱信息即可。 -
支持 HTML 和附件:可以发送富文本 HTML 格式的邮件,并支持附加文件。
-
多平台支持:支持 Windows、macOS 和 Linux 平台,适用于各种操作系统。
-
简洁的 API:
yagmail
提供的 API 简洁直观,用户无需手动处理邮件协议和编码问题。 -
自动添加签名:允许用户设置个性化签名,并在每封邮件中自动添加。
基本功能
1. 配置和发送简单邮件
发送邮件前,需要配置邮箱账户和密码。yagmail
支持通过 OAuth2 进行身份验证,确保账号的安全性。
以下示例展示了如何发送一封简单的文本邮件。
import yagmail
# 配置发件人邮箱和授权码
yag = yagmail.SMTP('your_email@gmail.com', 'your_password')
# 发送邮件
yag.send(to='recipient_email@example.com', subject='测试邮件', contents='这是一封测试邮件')
print("邮件发送成功!")
此代码通过 SMTP
类创建了一个 yag
实例,然后调用 send()
方法发送邮件。需要传入收件人邮箱、邮件主题和邮件内容。
2. 发送带有 HTML 内容的邮件
除了文本邮件外,yagmail
还支持 HTML 格式的邮件,可以用于发送带有样式的邮件内容。
html_content = """
<h1>欢迎使用 yagmail</h1>
<p>这是一个 <b>HTML</b> 格式的邮件示例。</p>
"""
# 发送 HTML 内容的邮件
yag.send(to='recipient_email@example.com', subject='HTML 格式邮件', contents=html_content)
print("HTML 格式的邮件发送成功!")
在这个示例中,邮件内容为 HTML 格式,yagmail
会自动识别并正确渲染 HTML 内容。
3. 发送带附件的邮件
yagmail
提供了附件支持,可以将文件附加到邮件中发送,适用于传输报告、图片、文档等文件。
# 指定文件路径
attachment_path = '/path/to/your/file.pdf'
# 发送带附件的邮件
yag.send(to='recipient_email@example.com', subject='带附件的邮件', contents='请查收附件', attachments=attachment_path)
print("带附件的邮件发送成功!")
通过设置 attachments
参数,yagmail
会自动将指定文件附加到邮件中并发送。
高级功能
1. 使用 OAuth2 验证
为了提高安全性,Gmail 建议使用 OAuth2 验证而不是直接使用邮箱密码。yagmail
支持 OAuth2,用户可以通过生成的 OAuth2 凭证进行认证。
yag = yagmail.SMTP('your_email@gmail.com', oauth2_file='~/path_to_oauth2.json')
yag.send(to='recipient_email@example.com', subject='OAuth2 验证邮件', contents='通过 OAuth2 发送的邮件')
print("邮件发送成功!")
此示例展示了如何使用 OAuth2 验证来进行邮件发送,确保邮件账户安全。
2. 多个内容段落与动态邮件内容
yagmail
支持在邮件中插入多个内容段落,包括文本、HTML 和图片链接等。
contents = [
"您好,这是一封多段落的邮件。",
"<h3>以下是详细内容:</h3>",
"这是纯文本段落",
{"path/to/image.png": "图片描述"}
]
yag.send(to='recipient_email@example.com', subject='多段落邮件示例', contents=contents)
print("多段落邮件发送成功!")
此代码中,我们将邮件内容分为多个段落,包括文本和 HTML 段落以及图片。yagmail
会自动将这些内容整合到邮件中。
3. 使用个性化签名
yagmail
允许用户设置个性化签名,并在发送邮件时自动添加。这在日常商务和客户邮件中非常有用。
# 发送邮件并添加签名
signature = "Best regards,\nYour Name"
yag.send(to='recipient_email@example.com', subject='邮件带签名', contents='这是带有签名的邮件。\n' + signature)
print("带签名的邮件发送成功!")
在这个示例中,我们手动添加了个性化签名,但你也可以通过全局配置自动添加签名。
实际应用场景
1. 自动化定时发送报告
yagmail
可以用于定时发送每日或每周的业务报告。结合 schedule
库或其他定时任务管理工具,可以实现定期自动发送 Excel 报表或财务数据等功能。
import schedule
import time
def send_report():
yag.send(to='recipient_email@example.com', subject='每日报告', contents='请查收今日的业务报告', attachments='/path/to/report.xlsx')
print("报告已发送!")
# 每天早上9点发送报告
schedule.every().day.at("09:00").do(send_report)
while True:
schedule.run_pending()
time.sleep(60)
通过结合 schedule
库,yagmail
可以每天定时发送报告邮件,适用于自动化任务。
2. 批量发送邮件
在营销活动中,yagmail
可以帮助实现批量邮件发送,比如发送促销信息或活动通知。通过循环,可以向多个收件人发送个性化的邮件内容。
recipients = ['user1@example.com', 'user2@example.com', 'user3@example.com']
for recipient in recipients:
yag.send(to=recipient, subject='活动通知', contents='尊敬的用户,欢迎参加我们的新年活动!')
print(f"邮件发送给 {recipient} 成功!")
这种批量发送方式适用于小规模的邮件发送任务,对于大规模营销邮件推荐使用专业的邮件服务。
3. 任务完成通知
在长时间的计算任务或脚本执行完成后,可以通过 yagmail
发送通知邮件,帮助开发者实时获知任务进展情况,避免人工等待。
def long_running_task():
# 模拟长时间任务
time.sleep(60) # 假设任务耗时60秒
yag.send(to='your_email@gmail.com', subject='任务完成', contents='您的任务已完成!')
print("通知邮件已发送!")
long_running_task()
此代码在任务完成后发送通知邮件,适用于数据处理、模型训练等长时间任务的进度提醒。
总结
Python yagmail
是一个专门用于 Gmail 邮件发送的 Python 库,它简化了邮件发送流程,无需手动配置复杂的 SMTP 设置。无论是发送简单的文本邮件、HTML 邮件还是带附件的邮件,yagmail
都能通过简洁的 API 帮助用户高效完成任务。此外,yagmail
还支持多段内容、OAuth2 安全验证和个性化签名等功能,适合在日常自动化办公、营销邮件发送和任务通知等场景中使用。
THE END !
文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。
标签:python,send,发送,Python,HTML,yagmail,com,邮件 From: https://blog.csdn.net/csdn_xmj/article/details/143946935