0

我正在努力通过 OpenPop 组件接收 pop3 电子邮件。我正在从服务器接收电子邮件并保存到 sql 数据库。在这一点上,没有问题。

但是今天,我意识到,一些图像没有显示在 Richtextbox 上。此电子邮件的源代码:

原图文件名:image001.jpg

内容类型:图片/jpeg;name="image001.jpg"
Content-Transfer-Encoding: base64
Content-ID: image001.jpg@01D16A6B.41013C60

在 html 正文中,cid 值:image001.jpg@01D16A6B.41013C60

使用上面的代码,我没有任何问题。因为我从 CID 值中获取图像文件名。(图片001.jpg)。我正在从 SQL 服务器获取具有真实图像文件名的图像。

但是,如果我们通过 Gmail 网络界面发送相同的电子邮件;

内容类型:图片/jpeg;name="image001.jpg"
内容配置:内联;filename="image001.jpg"
内容传输编码:base64
内容 ID:ii_iksd5tmd1_152f4c90885b6c5d

我们在 Richtextbox 上看到 CID 值:

cid:ii_iksd5tmd1_152f4c90885b6c5d

这是问题所在。

CID 值不包含文件名信息。所以,我没有得到图像。当从 Gmail 接收电子邮件时,CID 值会发生变化。

为了捕捉真实的图像文件名,我该怎么办?

非常感谢。

4

3 回答 3

1

使用以下逻辑获取文件名:

如果Content-Disposition头存在,则使用filename参数值作为附件文件名。否则,如果存在,则回退到使用标头上的name参数值。Content-Type

Content-Id头值可以是任何值,您真正可以从中得到的只是它是消息上下文中的唯一字符串。

显然,邮件 HTML 中的 cid: URL 指的是Content-Id标头值,因此如果您希望在将附件保存到磁盘后能够在以后引用该附件,那么您还需要Content-Id将附件的数据库记录。

于 2016-02-18T22:10:36.550 回答
0

OpenPop 结果:

内容描述:空
内容 ID:空
内容处置:空

我正在尝试另一个网络界面和相同的结果。例如:Outlook Web 界面

例子 :

富文本中的 HTML 正文

"img src="cid:ii_iksd5tlv0_152f4c90885b6c5d" height="398" width="530">
img src="cid:ii_iksd5tmd1_152f4c90885b6c5d" height="398" width="530">
​>

原始图像文件名:DSC00011.jpg 和 DSC00018.jpg

于 2016-02-18T22:29:39.367 回答
0

HTML 邮件中内联使用的图像不一定具有“真实文件名”。他们可能只使用 CID。您应该将 CID 与图像一起存储在数据库中,然后通过 CID 从数据库中检索图像以显示它。

于 2016-02-18T22:25:38.827 回答