Outlook插件或Microsoft Exchange能否删除邮件正文内的指定元素?
可行的免费实现方案
1. Outlook VBA 脚本(单用户本地自用首选)
你可以直接通过Outlook自带的VBA能力操作邮件正文,无需依赖第三方服务:
- 操作路径:点击Outlook「文件」-「选项」-「自定义功能区」,勾选「开发者」选项卡启用开发模式
- 核心逻辑是读取邮件的
HTMLBody(HTML格式邮件)或Body(纯文本邮件)属性,解析后删除目标元素再写回即可 - 示例参考代码(删除正文内所有class为
ad-banner的div元素,可根据实际需求修改匹配规则):
Sub RemoveTargetElementFromMail() Dim selectedMail As Outlook.MailItem Dim htmlContent As String Dim regEx As Object Set selectedMail = Application.ActiveExplorer.Selection.Item(1) Set regEx = CreateObject("VBScript.RegExp") regEx.Global = True regEx.IgnoreCase = True ' 正则规则可根据你要删除的元素特征修改 regEx.Pattern = "<div[^>]*class=""ad-banner""[^>]*>[\s\S]*?</div>" If selectedMail.BodyFormat = olFormatHTML Then htmlContent = selectedMail.HTMLBody htmlContent = regEx.Replace(htmlContent, "") selectedMail.HTMLBody = htmlContent selectedMail.Save End If Set regEx = Nothing Set selectedMail = Nothing End Sub
- 你还可以搭配Outlook规则,让符合条件的邮件到达时自动触发脚本执行,无需手动操作。
2. 自研Office JS Outlook 外接程序(团队多用户场景适用)
你之前查阅官方文档可能遗漏了通用的正文读写API,目前Office JS完全支持相关操作:
- 调用
Office.context.mailbox.item.body.getAsync方法可以获取完整的邮件正文内容,支持指定CoercionType.Html或者CoercionType.Text格式 - 自己实现目标元素的删除逻辑后,调用
Office.context.mailbox.item.body.setAsync方法把处理后的正文写回即可 - 这个方案完全免费,可根据需求定制功能,适合需要批量部署给企业内部团队使用的场景。
3. Exchange PowerShell 传输规则(管理员层面全局管控适用)
如果你有Exchange的管理员权限,可以直接在邮件流层面处理,不需要用户端做任何配置:
- 使用Exchange PowerShell模块创建传输规则,配置「在邮件主题或正文中删除特定文本」或更复杂的HTML内容匹配规则
- 支持针对入站、出站、内部邮件等不同场景配置,所有邮件经过Exchange服务器的时候就会自动删除你指定的正文元素,适合企业全局统一管控的场景。
内容的提问来源于stack exchange,提问作者Rogério Ferreira de Melo
相关产品推荐
相关产品推荐

