跳转至

EmailWidget - 强大的邮件组件库

✨ 特性

  • 小巧轻量: 快速安装,无复杂依赖(小于 1MB)
  • 易于使用: 清晰简单的 API,几行代码就能创建漂亮的邮件模板然后快速发送
  • 完整文档: 项目拥有完整的文档和类型注解,在 IDE 中能获得全面的提示
  • 丰富组件: 目前包含 12 个漂亮的展示组件,所有组件均符合 Fluent 风格,可在下方查看
  • 全面测试: 核心的功能经过完整的测试,确保项目可用
  • 完全免费: 项目使用 MIT 开源协议,您可以随意在任何商业项目中使用

✨ 为什么选择 EmailWidget?

想发警告或者日志到邮箱,但是不会美化,样式太丑?使用 EmailWidget 来打通发送邮件的最后一步!

想要一个漂亮的邮件模版,但是不会 HTML/CSS 或者干脆懒得写?网上的模版删删改改复用困难而且不支持移动端?那么欢迎来试试 EmailWidget,可复用,响应式,完整的类型提示,全面的文档,轻量级的邮箱组件库,祝您快速搭建自己的报告模版

EmailWidget 是专为 Python 开发者设计的邮件组件库,让你用几行代码就能创建出美观的 HTML 邮件报告而不需要了解 HTML 和邮箱的 CSS 的细节。项目经过 600+个测试用例 验证,核心代码 100% 测试覆盖, 确保稳定可靠。

下面的邮箱样式,只需要 3 行代码 就能创建,生成出来的内容就能直接当做邮件发送,接受者也能看到美观的邮件

Python
from email_widget import Email

email = Email("欢迎使用EmailWidget")

email.add_card("Python版本", "您需要Python3.10或以上才能使用EmailWidget", metadata={"Python版本": "3.10+"})

email.add_quote("EmailWidget是一个用于构建和发送HTML邮件的Python库。", "EmailWidget")

email.export_html('welcome_email.html')

image-20250706200253564

"🚀 快速开始"

📦 安装

Bash
pip install EmailWidget

30秒创建专业报告

Python
from email_widget import Email, TextWidget, ProgressWidget
from email_widget.core.enums import TextType, ProgressTheme

# 创建邮件
email = Email("📊 业务报告")

# 添加标题
email.add_widget(
    TextWidget()
    .set_content("季度业绩总结")
    .set_type(TextType.TITLE_LARGE)
)

# 添加进度指标
email.add_widget(
    ProgressWidget()
    .set_value(92)
    .set_label("目标完成率")
    .set_theme(ProgressTheme.SUCCESS)
)

# 导出HTML
email.export_html("report.html")
📊 业务报告

🎪 使用场景

📊

数据分析报告

为数据分析师创建专业的数据可视化邮件报告

业务分析 KPI监控 趋势分析

核心组件: ChartWidget、TableWidget、ProgressWidget

🖥️

系统监控报告

服务器状态、性能指标等系统运维监控邮件

系统运维 服务监控 告警通知

核心组件: StatusWidget、AlertWidget、LogWidget

🕷️

爬虫任务报告

爬虫任务执行情况、数据采集统计邮件报告

数据采集 任务监控 质量报告

核心组件: ProgressWidget、TableWidget、LogWidget

📧

定期业务通讯

团队周报、项目进展、业务总结等定期邮件

项目管理 团队沟通 业务汇报

核心组件: TextWidget、CardWidget、QuoteWidget

🎨 组件画廊

基础组件

Python
# 8种预设样式
email.add_widget(
    TextWidget()
    .set_content("大标题")
    .set_type(TextType.TITLE_LARGE)
)

email.add_widget(
    TextWidget()
    .set_content("章节标题")
    .set_type(TextType.SECTION_H2)
)

email.add_widget(
    TextWidget()
    .set_content("正文内容,支持多行文本和自动格式化。")
    .set_type(TextType.BODY)
)

image-20250702112724320

Python
# DataFrame直接导入
table = TableWidget().set_title("销售数据")
table.set_dataframe(df)

# 手动添加行
table = TableWidget()
table.set_headers(["产品", "销量", "状态"])
table.add_row(["iPhone", "1000", "success"])
table.add_row(["iPad", "800", "warning"])

email.add_widget(table)

image-20250702113233960

Python
# matplotlib图表
fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [1, 4, 2, 3])
ax.set_title("趋势图")

email.add_widget(
    ChartWidget()
    .set_chart(plt)
    .set_title("数据趋势")
    .set_description("显示业务指标变化趋势")
)

image-20250702113423501

高级组件

Python
# 线性进度条
email.add_widget(
    ProgressWidget()
    .set_value(75)
    .set_label("项目进度")
    .set_theme(ProgressTheme.PRIMARY)
)

# 圆形进度条
email.add_widget(
    CircularProgressWidget()
    .set_value(85)
    .set_label("完成率")
)

image-20250702113553794

Python
# 状态卡片
email.add_widget(
    CardWidget()
    .set_title("系统状态")
    .set_content("所有服务正常运行")
    .set_icon("✅")
)

# 状态列表
status_items = [
    {"label": "数据库", "status": "success", "value": "连接稳定"},
    {"label": "API", "status": "warning", "value": "响应时间较长"}
]
email.add_status_items(status_items)

image-20250702113934973

Python
# 警告框
email.add_widget(
    AlertWidget()
    .set_content("系统维护通知")
    .set_alert_type(AlertType.WARNING)
    .set_title("重要提醒")
)

# 引用样式
email.add_widget(
    QuoteWidget()
    .set_content("数据是新时代的石油")
    .set_author("Clive Humby")
    .set_source("数据科学家")
)

image-20250702114027153

📖 文档导航

🤝 社区与支持

获取帮助

参与贡献

推荐使用 uv 作为项目管理和开发的包管理工具

Bash
# 1. 克隆项目
git clone https://github.com/271374667/EmailWidget.git

# 2. 安装开发环境
uv sync

# 3. 运行测试
uv run pytest

# 4. 提交更改
git commit -m "Feature: 添加新功能"

社交媒体

📄 许可证

本项目采用 MIT License 开源协议。


⭐ **如果这个项目对你有帮助,请给我们一个星标!** ⭐

Made with ❤️ by Python调包侠

📺 观看视频教程📖 查看完整文档