Power Automate中如何区分邮件签名图片与插入图片并排除前者?
区分邮件签名图片与正文/附件图片的实用方法
以下是几个在Power Automate中可行的方案,替代不靠谱的文件名过滤:
1. 解析邮件HTML结构定位签名区块
邮件签名通常会被包裹在特定的HTML标签中(比如div.mso-signature、span.signature这类类名),可以通过以下步骤处理:
- 获取邮件的Body HTML内容
- 使用正则表达式或字符串截取,定位签名区块的范围(比如匹配
<div class="mso-signature">到</div>之间的内容) - 从签名区块中提取所有图片的
cid:引用(格式类似cid:image001.png@01D9XXXX) - 遍历邮件附件时,检查附件的
ContentId是否和提取到的cid值匹配,匹配的即为签名图片,直接跳过
2. 利用签名分隔符判断位置
很多邮件会用--、---这类分隔符区分正文和签名,结合HTML分析:
- 先把邮件HTML转为纯文本,找到分隔符的位置
- 回到HTML内容,确定分隔符对应的HTML节点位置,以此为界,只处理分隔符之前的图片引用
- 同样对比附件的
ContentId,排除分隔符之后区域引用的图片
3. 基于图片哈希值的重复签名过滤
如果同一个发件人常用固定签名图片,可以记录其哈希值来过滤:
- 对首次遇到的发件人,先保存其签名图片的文件哈希(Power Automate可以用
Get file hash动作) - 后续处理该发件人的邮件时,计算图片附件的哈希值,和已记录的签名哈希匹配的就排除
- 这个方法需要配合存储(比如OneDrive里的配置文件、Dataverse表)来记录哈希和发件人的对应关系
Power Automate操作示例片段
比如用正则提取签名里的ContentId:
- 添加
Compose动作,输入正则表达式:<div class="mso-signature">.*?<img.*?src="cid:(.*?)".*?>.*?</div>(根据实际HTML结构调整) - 用
Matches动作执行正则匹配,获取所有匹配到的ContentId - 遍历邮件附件时,添加条件:
Attachment Content Type包含image/,且ContentId不在匹配到的列表中 - 满足条件的图片才执行保存到OneDrive并关联Planner任务的操作
内容的提问来源于stack exchange,提问作者Jan_B
相关产品推荐
相关产品推荐

