求助:如何通过Sieve过滤器规则添加内容至邮件正文
Sieve过滤器实现邮件正文添加内容
要给邮件正文添加内容,需要用到Sieve的几个扩展(确保你的邮件服务器支持,比如Dovecot默认支持),结合你已有的主题修改规则,完整规则代码如下:
require ["variables", "replace", "body", "editheader"]; if allof(not address :domain :is ["from"] ["example.com"], not header :contains "Subject" ["[TEXT]"]) { # 保留你已实现的主题修改逻辑 if header :matches "Subject" "*" { set "subject" "${1}"; deleteheader "Subject"; addheader :last "Subject" "[TEXT] ${1}"; } # 添加正文内容(区分纯文本和HTML格式) # 处理HTML格式邮件 if body :contenttype "text/html" :matches "*" { set "html_body" "${1}"; # 在正文末尾(</body>标签前)添加自定义内容,避免破坏HTML结构 replace "${html_body}<br><br><div style='color: #666; font-style: italic;'>[TEXT] 自定义附加内容</div></body>"; } # 处理纯文本格式邮件 elsif body :contenttype "text/plain" :matches "*" { set "plain_body" "${1}"; # 在正文末尾添加换行分隔的自定义内容 replace "${plain_body}\n\n---\n[TEXT] 自定义附加内容"; } }
关键说明:
require语句声明了规则依赖的扩展:variables用于存储临时变量,replace用于替换正文内容,body用于匹配正文,editheader用于修改邮件主题- 针对纯文本和HTML邮件分别处理,避免格式混乱:
- 纯文本邮件直接用换行和分隔线区分附加内容
- HTML邮件在
</body>标签前插入格式化的内容,保持页面结构完整
- 如果不需要区分格式,也可以简化为直接匹配所有正文并添加内容,但可能导致HTML格式错乱
扩展提示:
- 若要在正文开头添加内容,只需调整
replace里的内容顺序,比如纯文本改为replace "[TEXT] 自定义附加内容\n\n${plain_body}" - 可以根据需求修改附加内容的样式或位置,比如插入特定标签后
内容的提问来源于stack exchange,提问作者WhoAmI
相关产品推荐
相关产品推荐

