2

某些邮件客户端允许发件人将图像直接放在他们的电子邮件正文中(而不是作为传统附件)。当我在我的应用程序中收到其中一封电子邮件时,我需要能够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??

下面是带有 base64 编码图像的text/html主体和部分。image/jpeg

之前有没有人对此进行过任何研究并专门为此目的编制了一个列表或构建了一个 RegEx?

我意识到实现我的目标的一种更可靠的方法是查看text/html消息的一部分——从我所做的少数测试来看,这似乎更加标准化——但不幸的是,我无法在这种情况。

我正在使用 C#,如果这对任何人都很重要。

这是迄今为止我编译的文本/纯图像占位符列表:

  • 邮箱: [image: filename.jpg]
  • 展望 2007: [cid:filename.jpg@01CB50D4.769583B0]
  • 雷鸟 3.0.7: none
4

1 回答 1

3

我建议使用 html 部分。如果您只想在纯文本部分中找到一个占位符,这个非常简单的正则表达式就足够了(PCRE):

^\[.*\]$

至少这是适用于上述示例的方法。如果您想识别图像名称,则需要一些复杂的表达式。请注意,无论内容是什么,这都会捕获所有以 [ 开头并以 ] 结尾的行。如果您想将正则表达式限制为某些文件类型,请尝试以下操作:

^\[.*(\.jpg|\.jpeg|\.png|\.gif|\.bmp).*\]$i

示例将在 Perl 中工作,因为您没有提到语言......

于 2010-09-11T18:19:49.180 回答