🚀 一个现代化、易用的Python邮件组件库,让你轻松创建美观的HTML邮件报告
Project description
EmailWidget - 强大的邮件组件库
✨ 为什么选择 EmailWidget?
想发警告或者日志到邮箱,但是不会美化,样式太丑?使用 EmailWidget 来打通发送邮件的最后一步!
EmailWidget 是专为 Python 开发者设计的邮件组件库,让你用几行代码就能创建出美观的 HTML 邮件报告而不需要了解 HTML 的细节。项目经过 500+个测试用例 验证,核心代码 100% 测试覆盖, 确保稳定可靠。
🎨 丰富的组件生态 - 12 个专业组件
# 一行代码,多种组件
email.add_widget(TextWidget().set_content("标题").set_type(TextType.TITLE_LARGE))
email.add_widget(TableWidget().set_dataframe(df)) # 支持 pandas 的 Dataframe
email.add_widget(ChartWidget().set_chart(plt)) # 支持 matplotlib/seaborn 的图表
email.add_widget(ProgressWidget().set_value(85).set_theme(ProgressTheme.SUCCESS))
# 直接使用快捷方法添加组件
email.add_progress(value=95, max_value=100)
| 🎯 组件类型 | 📝 功能特色 | 🔧 使用场景 |
|---|---|---|
| 📝 TextWidget | 8 种文本样式、自动编号、章节管理 | 标题、正文、说明文字 |
| 📊 TableWidget | DataFrame 集成、状态单元格、彩色标记 | 数据表格、统计报表 |
| 📈 ChartWidget | matplotlib/seaborn 原生支持、自动编码 | 数据可视化、趋势图 |
| 📊 ProgressWidget | 5 种主题、增减操作、百分比显示 | 任务进度、完成率 |
| ⭕ CircularProgressWidget | 圆形进度条、多种尺寸、动态更新 | KPI 指标、完成度 |
| 🎴 CardWidget | 信息卡片、图标支持、元数据管理 | 摘要信息、状态展示 |
| ⚠️ AlertWidget | 5 种警告类型、自定义图标、消息提醒 | 通知、警告、提示 |
| 🖼️ ImageWidget | 多源支持、尺寸控制、描述文字 | 图片展示、Logo 显示 |
| 💬 QuoteWidget | 引用样式、作者信息、来源标注 | 引言、评论、摘录 |
| 📊 StatusWidget | 状态项管理、布局控制、动态更新 | 系统状态、服务监控 |
| 📑 ColumnWidget | 自动/手动列、响应式布局、Widget 管理 | 多列布局、内容分组 |
| 📋 LogWidget | 日志级别、语法高亮、过滤功能 | 系统日志、运行记录 |
🏃♂️ 快速开始
📦 安装
基础安装(推荐)
pip install EmailWidget
💡 安装说明:仅需 jinja2 依赖,轻量快速。如果需要 TableWidget 的 DataFrame 功能,或者 ChartWidget 的 Matplotlib 请自行安装 pandas 或者 matplotlib/seaborn。
🎯 30 秒创建第一个报告
from email_widget import Email, TextWidget, ProgressWidget
from email_widget.core.enums import TextType, ProgressTheme
# 1️⃣ 创建邮件对象
email = Email("📊 销售数据日报")
# 2️⃣ 添加标题和页面脚注
email.set_subtitle("2024年第一季度业绩汇总")
email.set_footer("本报告由数据分析团队自动生成")
# 3️⃣ 添加一个大标题
email.add_widget(
TextWidget().set_content("📈 销售业绩总览").set_type(TextType.TITLE_LARGE)
)
# 4️⃣ 添加进度指标
email.add_widget(
ProgressWidget()
.set_value(92)
.set_label("季度目标完成率")
.set_theme(ProgressTheme.SUCCESS)
)
# 5️⃣ 添加数据表格(使用便捷方法,直接调用email而不是创建控件然后add_widget)
data = [
["iPhone 15", "1,250", "¥1,875,000", "125%"],
["MacBook Pro", "580", "¥1,740,000", "116%"],
["iPad Air", "920", "¥552,000", "108%"],
]
email.add_table_from_data(
data=data, headers=["产品", "销量", "收入", "达成率"], title="🏆 产品销售明细"
)
# 6️⃣ 导出HTML文件
file_path = email.export_html("daily_report.html")
print(f"🎉 报告已生成: {file_path}")
🔧 组件展示
下面为目前所有可用控件的展示(部分功能可能未能及时更新,如果出现错误或者不一致的情况请以文档为准)
🎨 高级特性
🎯 链式调用支持
# 流畅的API设计
email = (Email("项目进展报告")
.set_subtitle("第一季度总结")
.set_footer("Generated by EmailWidget")
.add_widget(TextWidget().set_content("概览").set_type(TextType.TITLE_LARGE))
.add_widget(ProgressWidget().set_value(78).set_label("整体进度")))
📚 学习资源
| 📖 资源类型 | 🔗 链接 | 📝 内容 |
|---|---|---|
| 🚀 快速开始 | 安装指南 | 环境配置、第一个邮件 |
| 📘 用户手册 | 组件详解 | 12 个组件完整教程 |
| 🔧 API 文档 | API 参考 | 完整类和方法文档 |
| 💡 实战示例 | 应用案例 | 真实场景代码 |
| 🛠️ 开发指南 | 贡献代码 | 参与项目开发 |
🤝 社区与贡献
🌟 参与开源
# 克隆项目
git clone https://github.com/271374667/EmailWidget.git
# 安装开发依赖
pip install -e ".[dev]"
# 运行测试
pytest tests/
# 提交代码
git add .
git commit -m "feat: 添加新功能"
📞 联系我们
- 🐛 问题反馈: GitHub Issues
- 💬 讨论交流: GitHub Discussions
- 📧 邮件联系: 271374667@qq.com
- 📺 视频教程: Bilibili 频道
📄 许可证
本项目采用 MIT License 开源协议。
⭐ 如果这个项目对你有帮助,请给我们一个 Star! ⭐
Made with ❤️ by Python 调包侠 | 观看教程 | 查看文档
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file emailwidget-0.1.11.tar.gz.
File metadata
- Download URL: emailwidget-0.1.11.tar.gz
- Upload date:
- Size: 711.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c9b97841a4bad73800137332376e4445276c0e9ebb4ecde2a11cf49fbb05978
|
|
| MD5 |
6841b22681657022c53a2fb1f10be2bd
|
|
| BLAKE2b-256 |
93c778dfb4b832f23c298c2c5633a39274ff25a4c9507afcff0a9176b9d97321
|
Provenance
The following attestation bundles were made for emailwidget-0.1.11.tar.gz:
Publisher:
docs-and-publish.yml on 271374667/EmailWidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emailwidget-0.1.11.tar.gz -
Subject digest:
8c9b97841a4bad73800137332376e4445276c0e9ebb4ecde2a11cf49fbb05978 - Sigstore transparency entry: 261381422
- Sigstore integration time:
-
Permalink:
271374667/EmailWidget@dd0743c7c8f5428152f4890f6469c9542e203fb8 -
Branch / Tag:
refs/tags/v0.1.11 - Owner: https://github.com/271374667
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
docs-and-publish.yml@dd0743c7c8f5428152f4890f6469c9542e203fb8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file emailwidget-0.1.11-py3-none-any.whl.
File metadata
- Download URL: emailwidget-0.1.11-py3-none-any.whl
- Upload date:
- Size: 60.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdfb37a48aa681a8467c135396d8f97197d5590865554e72faa55974e2c32dee
|
|
| MD5 |
78a2f17a536d6108108bc0a6ca1bd64c
|
|
| BLAKE2b-256 |
f54882a992db6a7fb844f1cb5d083d474574c2fe0f7d1c751e8729ae25d0a025
|
Provenance
The following attestation bundles were made for emailwidget-0.1.11-py3-none-any.whl:
Publisher:
docs-and-publish.yml on 271374667/EmailWidget
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emailwidget-0.1.11-py3-none-any.whl -
Subject digest:
fdfb37a48aa681a8467c135396d8f97197d5590865554e72faa55974e2c32dee - Sigstore transparency entry: 261381429
- Sigstore integration time:
-
Permalink:
271374667/EmailWidget@dd0743c7c8f5428152f4890f6469c9542e203fb8 -
Branch / Tag:
refs/tags/v0.1.11 - Owner: https://github.com/271374667
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
docs-and-publish.yml@dd0743c7c8f5428152f4890f6469c9542e203fb8 -
Trigger Event:
push
-
Statement type: