如何在Sieve中对邮件内容执行查找替换操作?
在Sieve中实现邮件内容的查找替换
标准Sieve协议本身不支持直接修改邮件正文,需要依赖邮件服务器支持的Sieve扩展,常用的是replace(用于文本内容替换)和editheader(用于修改MIME实体,比如HTML正文)扩展。
针对你给出的HTML正文替换需求(将<em><strong>abc</strong></em>替换为<em><strong>xyz</strong></em>),可以结合body测试和replace动作实现,前提是你的邮件服务器已启用相关扩展。
示例Sieve规则
require ["body", "replace", "mime"]; # 匹配包含目标HTML片段的HTML格式邮件 if body :contenttype "text/html" :contains "<em><strong>abc</strong></em>" { # 替换指定HTML内容 replace :contenttype "text/html" "<em><strong>abc</strong></em>" "<em><strong>xyz</strong></em>"; }
注意事项
- 不同邮件服务器(如Dovecot、Exim)对Sieve扩展的实现可能略有差异,需确认服务器是否启用了
replace和body扩展。 - 如果需要处理更复杂的内容替换(比如正则匹配),部分服务器支持
regex扩展,可以用:regex替代:contains来实现模糊匹配。 - 若邮件同时包含纯文本和HTML版本,需分别针对
text/plain和text/html类型编写替换规则。
内容的提问来源于stack exchange,提问作者Kaympe20
相关产品推荐
相关产品推荐

