某些邮件客户端允许发件人直接将图像放在电子邮件的正文中(而不是作为传统附件)。当我在应用程序中收到这些电子邮件之一时,我需要能够查看 只要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中起作用,因为您没有提及语言...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top