首页 > 编程语言 >python | yagmail,一个实用的 Python 库!

python | yagmail,一个实用的 Python 库!

时间:2025-01-09 18:01:48浏览次数:3  
标签:python send 发送 Python HTML yagmail com 邮件

本文来源公众号“python”,仅用于学术分享,侵权删,干货满满。

原文链接:yagmail,一个实用的 Python 库!

大家好,今天为大家分享一个实用的 Python 库 - yagmail。

Github地址:https://github.com/kootenpv/yagmail

在自动化办公和数据驱动的工作流程中,自动发送电子邮件是一项常见的任务。yagmail 是一个简单、方便的 Python 库,专门用于简化 Gmail 的邮件发送过程。与使用传统的 smtplib 模块相比,yagmail 提供了更加简洁的接口,自动处理编码问题,并支持发送带有附件、HTML 格式内容的邮件,适合在日常工作中快速构建邮件自动化应用。

安装

yagmail 可以通过 pip 安装:

pip install yagmail

在使用 Gmail 服务之前,还需要确保已启用 Gmail 账户的“低安全性应用访问”功能,或生成应用专用密码。

特性

yagmail 提供了一系列简单的功能,帮助用户快速高效地发送邮件。

  1. 易于配置yagmail 自动处理 Gmail 配置,只需设置一次邮箱信息即可。

  2. 支持 HTML 和附件:可以发送富文本 HTML 格式的邮件,并支持附加文件。

  3. 多平台支持:支持 Windows、macOS 和 Linux 平台,适用于各种操作系统。

  4. 简洁的 APIyagmail 提供的 API 简洁直观,用户无需手动处理邮件协议和编码问题。

  5. 自动添加签名:允许用户设置个性化签名,并在每封邮件中自动添加。

基本功能

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

相关文章

  • 如何用python编表白程序
    用python编表白程序的方法:1、创建GUI窗口,实现代码的调用。2、编写点击触发函数,实现表白程序。具体代码如下:from tkinter import *from tkinter import messageboxdef closeWindow():    messagebox.showinfo(title="警告",message="不许关闭,好好回答") ......
  • 2025最新Python安装教程+PyCharm安装教程(超详细!)看这一篇全都搞定!
    Python安装1、首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载。(免下载直接安装......
  • 如何安装python?超详细安装教程!
    首先,请确保你的系统是Windows-64位1.下载Python首先,打开浏览器,我们需要到Python的官方网站在地址栏输入python.org,然后点击页面上的“Downloads”按钮,接着选择适合你电脑系统的版本进行下载。如果是Windows或者Mac的小可爱们,直接下载推荐版本就好啦。小编下载的是python-3.7......
  • 《python基于时间序列分析的降雨量预测系统》毕业设计项目
    大家好我是君君学姐,混迹在java圈的辛苦码农。今天要和大家聊的是一款《python基于时间序列分析的降雨量预测系统》毕业设计项目。项目源码以及部署相关请联系君君学姐,文末附上联系信息。......
  • 《python基于循环神经网络的情感分类系统》毕业设计项目
    大家好我是君君学姐,混迹在java圈的辛苦码农。今天要和大家聊的是一款《python基于循环神经网络的情感分类系统》毕业设计项目。项目源码以及部署相关请联系君君学姐,文末附上联系信息。......
  • python 滑块验证码计算距离三种方法
    """滑块图像距离计算"""importrandomimportcv2importnumpyasnpimportrequestsimportddddocrdefdistance_cv(slice_url,bg_url):""":paramslice_url:滑块(缺口)图片地址:parambg_url:背景图地址:return:d......
  • 《python基于时间序列分析的降雨量预测系统》毕业设计项目
    大家好,我是俊星学长,一名在Java圈辛勤劳作的码农。今日,要和大家分享的是一款《python基于时间序列分析的降雨量预测系统》毕业设计项目。项目源码以及部署相关事宜,请联系俊星学长,文末会附上联系信息哦。......
  • 基于python+Django+mysql校园教室图书馆座位预约网站系统设计与实现
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发......
  • Python 数据类型
    列表(list):用于存储有序的元素集合,例如[1,2,3]、["apple","banana","cherry"]。列表是可变的,可以添加、删除或修改其中的元素。元组(tuple):用于存储有序的元素集合,与列表类似,但元组是不可变的,例如(1,2,3)、("apple","banana","cherry")。元组通常用于表......
  • 【python基础】python中copy用法
    在Python中,**复制(copy)**变量的操作主要有两种:浅复制(shallowcopy)和深复制(deepcopy)。这些复制方法会根据容器类型(如列表、字典等)不同的行为来决定如何复制对象。我们将分别介绍它们的用法和区别。1.浅复制(ShallowCopy)浅复制是指创建一个新的对象,但新对象中的元素是对原......