ErisPulse EmailForwarder
用于监听邮件适配器并将邮件转发到其他平台的 ErisPulse 模块。
功能特性
- 监听邮件适配器接收的新邮件
- 支持将邮件转发到多个平台(云湖、Telegram、OneBot11、OneBot12等)
- 灵活的目标配置(用户/群组/频道)
- 支持多种匹配模式(通配符、正则表达式、精确匹配、包含/不包含、前缀/后缀)
- 支持自定义模板系统
- 自动格式化邮件内容(主题、发件人、正文、附件)
安装
# 通过 ErisPulse CLI 安装
epsdk install EmailForwarder
# 或使用 pip 安装
pip install ErisPulse-EmailForwarder
快速开始
基本配置
在 config.toml 中添加以下配置:
[EmailForwarder]
enabled = true
# 定义默认模板
[EmailForwarder.templates.default]
content = """新邮件
主题: {subject}
发件人: {from}
收件人: {to}
{body}
#匹配规则 {rule_name}"""
# 添加转发规则
[[EmailForwarder.rules]]
name = "转发所有邮件"
template = "default"
[[EmailForwarder.rules.targets]]
platform = "onebot11"
type = "user"
id = "你的用户ID"
配置说明
模块配置
| 配置项 | 类型 | 必填 | 说明 |
|---|---|---|---|
enabled |
boolean | 否 | 是否启用模块,默认 true |
templates |
object | 否 | 模板定义 |
rules |
array | 否 | 转发规则列表 |
模板配置
模板使用简单的变量替换语法,支持以下变量:
| 变量 | 说明 |
|---|---|
{subject} |
邮件主题 |
{from} |
发件人 |
{to} |
收件人 |
{time} |
收件时间 |
{body} |
邮件正文 |
{rule_name} |
匹配规则名称 |
{attachments} |
附件列表 |
{attachment_count} |
附件数量 |
模板示例
[EmailForwarder.templates.default]
content = """新邮件
主题: {subject}
发件人: {from}
收件人: {to}
{body}
#匹配规则 {rule_name}"""
[EmailForwarder.templates.simple]
content = """[{rule_name}] {subject}
来自: {from}
---
{body}"""
[EmailForwarder.templates.detailed]
content = """=== 新邮件通知 ===
主题: {subject}
发件人: {from}
收件人: {to}
时间: {time}
---
{body}
---
附件数量: {attachment_count}
{attachments}
---
规则: {rule_name}"""
匹配模式
支持以下匹配模式:
| 模式 | 说明 | 示例 |
|---|---|---|
wildcard |
通配符匹配 | *@company.com |
regex |
正则表达式 | ^.*@company\.com$ |
exact |
精确匹配 | noreply@example.com |
contains |
包含匹配 | 重要 |
not_contains |
不包含匹配 | 广告 |
prefix |
前缀匹配 | [通知] |
suffix |
后缀匹配 | @company.com |
匹配条件
匹配条件使用数组配置,所有条件必须同时满足(AND逻辑):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
field |
string | 是 | 匹配字段:from/to/subject |
mode |
string | 是 | 匹配模式 |
value |
string | 是 | 匹配值 |
转发规则
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
name |
string | 否 | 规则名称 |
template |
string | 否 | 使用的模板名称,默认 default |
match |
array | 否 | 匹配条件列表 |
targets |
array | 是 | 转发目标列表 |
转发目标
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
platform |
string | 是 | 目标平台名称 |
type |
string | 是 | 目标类型(user/group/channel) |
id |
string | 是 | 目标ID |
配置示例
示例 1: 转发所有邮件
[[EmailForwarder.rules]]
name = "转发所有邮件"
[[EmailForwarder.rules.targets]]
platform = "telegram"
type = "user"
id = "123456789"
示例 2: 转发特定发件人的邮件(通配符匹配)
[[EmailForwarder.rules]]
name = "工作邮件转发"
[[EmailForwarder.rules.match]]
field = "from"
mode = "wildcard"
value = "*@company.com"
[[EmailForwarder.rules.targets]]
platform = "yunhu"
type = "group"
id = "G1001"
示例 3: 转发包含关键字的邮件(包含匹配)
[[EmailForwarder.rules]]
name = "重要邮件转发"
[[EmailForwarder.rules.match]]
field = "subject"
mode = "contains"
value = "紧急"
[[EmailForwarder.rules.targets]]
platform = "onebot11"
type = "user"
id = "2694611137"
示例 4: 多条件匹配(所有条件都必须满足)
[[EmailForwarder.rules]]
name = "公司重要邮件"
[[EmailForwarder.rules.match]]
field = "from"
mode = "suffix"
value = "@company.com"
[[EmailForwarder.rules.match]]
field = "subject"
mode = "contains"
value = "项目"
[[EmailForwarder.rules.targets]]
platform = "telegram"
type = "group"
id = "-1001234567890"
示例 5: 使用正则表达式匹配
[[EmailForwarder.rules]]
name = "通知邮件"
[[EmailForwarder.rules.match]]
field = "subject"
mode = "regex"
value = "^\\[通知\\].*"
[[EmailForwarder.rules.targets]]
platform = "yunhu"
type = "channel"
id = "C123456789"
示例 6: 排除广告邮件(不包含匹配)
[[EmailForwarder.rules]]
name = "正常邮件转发"
[[EmailForwarder.rules.match]]
field = "subject"
mode = "not_contains"
value = "广告"
[[EmailForwarder.rules.match]]
field = "subject"
mode = "not_contains"
value = "推广"
[[EmailForwarder.rules.targets]]
platform = "onebot11"
type = "group"
id = "987654321"
示例 7: 使用自定义模板
# 定义简洁模板
[EmailForwarder.templates.simple]
content = """[{rule_name}] {subject}
来自: {from}
---
{body}"""
# 使用简洁模板
[[EmailForwarder.rules]]
name = "简洁转发"
template = "simple"
[[EmailForwarder.rules.targets]]
platform = "telegram"
type = "user"
id = "123456789"
示例 8: 转发到多个平台
[[EmailForwarder.rules]]
name = "多平台转发"
[[EmailForwarder.rules.match]]
field = "from"
mode = "wildcard"
value = "important@company.com"
[[EmailForwarder.rules.targets]]
platform = "yunhu"
type = "group"
id = "G2001"
[[EmailForwarder.rules.targets]]
platform = "telegram"
type = "group"
id = "-1001234567890"
[[EmailForwarder.rules.targets]]
platform = "onebot11"
type = "user"
id = "2694611137"
支持的平台
- Yunhu - 云湖
- Telegram - Telegram
- OneBot11 - QQ等OneBot11协议平台
- OneBot12 - OneBot12协议平台
- Email - 邮件平台
使用方法
安装并配置完成后,启动 ErisPulse 即可自动转发邮件:
# 启动 ErisPulse
epsdk run main.py
别忘了安装对应的适配器哦~
故障排除
邮件未被转发
- 检查 EmailAdapter 是否正常运行
- 检查目标平台适配器是否已安装和启用
- 查看日志文件确认错误信息
- 验证配置文件中的平台名称、目标类型和ID是否正确
- 确认匹配规则是否正确
模板未生效
- 检查模板名称是否拼写正确
- 确保模板配置中包含
content字段 - 验证模板变量格式是否正确(使用花括号
{variable})
匹配规则不工作
- 检查匹配模式是否正确支持
- 验证正则表达式语法是否正确
- 确认匹配值是否需要转义(如
\n、\t等) - 查看日志确认匹配过程的详细信息
注意事项
- 确保 EmailAdapter 已正确安装和配置
- 目标平台的适配器需要已安装并启用
- 匹配条件为空时匹配所有邮件
- 多个匹配条件之间为 AND 逻辑(必须全部满足)
- 正则表达式匹配失败时会记录警告并视为不匹配
开发
本项目遵循 ErisPulse 模块开发规范。
许可证
MIT License - 详见 LICENSE 文件
贡献
欢迎提交 Issue 和 Pull Request!
Metadata
Release files for ErisPulse-EmailForwarder 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| erispulse_emailforwarder-1.0.1.tar.gz | 9.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| erispulse_emailforwarder-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.2 kB
Release files / erispulse_emailforwarder-1.0.1.tar.gz
| Download URL | erispulse_emailforwarder-1.0.1.tar.gz |
|---|---|
| Size | 9.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ddad23197dab621e5c7b998fb11bde949e0a6a57a3ebb8313eb78005434e125b
|
|
BLAKE2b-256 checksum How to use checksums |
4691f4240132e111f9684e8a8baa617bc4abc2fe49331eef6a824664fbb07566
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 14, 2026.
Transparency logRelease files / erispulse_emailforwarder-1.0.1-py3-none-any.whl
| Download URL | erispulse_emailforwarder-1.0.1-py3-none-any.whl |
|---|---|
| Size | 10.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6ac3ad79f61529a3184e3566c17819ac1b07a93404a639fe39d73707e6559d47
|
|
BLAKE2b-256 checksum How to use checksums |
d1d9b6ad14eea24326a05905937faffa3a04272a955bd487f30c0ced56b5c090
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 14, 2026.
Transparency log