正则是在纯文本电子邮件中查找在线图像的
-
02-10-2019 - |
题
某些邮件客户端允许发件人直接将图像放在电子邮件的正文中(而不是作为传统附件)。当我在应用程序中收到这些电子邮件之一时,我需要能够查看 只要 这 text/plain
消息主体并确定发件人嵌入了内联图像。
我正在尝试制作正则言论,以在 text/plain
消息正文,所以我可以将它们交换 <img>
我自己的启用HTML版本的标签。 (我知道古怪,但这是要求)。
我发现的问题是,占位符基于发送邮件客户端的不同。例如,从MS Outlook发送时 text/plain
多部分消息的主体看起来像这样:
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Check out this image:
[cid:image001.jpg@01CB50D4.769583B0]
Isn't it cool??
Gmail发送的类似消息有些不同:
Content-Type: text/plain; charset=ISO-8859-1
Check out this image:
[image: image001.jpg]
Isn't it cool??
这 text/html
身体和 image/jpeg
一部分带有基本64编码图像。
有没有人对此进行过任何研究,并为此目的编译了列表或建立了正则正则票据?
我意识到实现目标的一种更可靠的方法是查看 text/html
消息的一部分 - 从我完成的少数测试中,这似乎更为标准化 - 但不幸的是,在这种情况下,我无法访问该测试。
我正在使用C#,如果对任何人都很重要。
这是我迄今为止编制的文本/普通图像占位符列表:
- Gmail:
[image: filename.jpg]
- Outlook 2007:
[cid:filename.jpg@01CB50D4.769583B0]
- 雷鸟3.0.7:
none
解决方案
我建议您选择HTML部分。如果您只想在纯文本部分找到一个占位符,那么这个非常简单的正则表达式应该足够(PCRE):
^\[.*\]$
至少这是上面的示例。如果您想识别图像名称,则需要一些复杂的表达式。请注意,无论内容是什么,这都会从[并以]开头的所有线路。如果您想将REGEXP限制为某些文件类型,请尝试以下操作:
^\[.*(\.jpg|\.jpeg|\.png|\.gif|\.bmp).*\]$i
示例将在Perl中起作用,因为您没有提及语言...
不隶属于 StackOverflow