我正在通过OpenPop组件接收pop3电子邮件。我正在接收来自服务器的电子邮件并保存到sql数据库。此时,没有问题。
但是今天,我意识到,有些图片没有在richtextbox上显示。 这封电子邮件的源代码:
原始图像文件名:image001.jpg
Content-Type:image / jpeg;名称=" image001.jpg"
内容传输编码:base64
内容ID:image001.jpg@01D16A6B.41013C60
并且
在html正文中,cid值:image001.jpg@01D16A6B.41013C60
上面的代码,我没有任何问题。因为我从CID值获取图像文件名。 (image001.jpg)。我从SQL服务器获取具有真实图像文件名的图像。
但是,如果我们通过Gmail网络界面发送相同的电子邮件;
Content-Type:image / jpeg;名称=" image001.jpg"
内容处理:内联;文件名=" image001.jpg"
内容传输编码:base64
Content-ID:ii_iksd5tmd1_152f4c90885b6c5d
我们在richtextbox上看到了CID值:
CID:ii_iksd5tmd1_152f4c90885b6c5d
这是问题所在。
CID值不包含文件名信息。所以,我没有得到图像。当从Gmail收到电子邮件时,CID值会发生变化。
为了捕捉真实的图像文件名,我该怎么办?
非常感谢。
答案 0 :(得分:1)
使用以下逻辑获取文件名:
如果存在Content-Disposition
标头,请使用filename
参数值作为附件文件名。否则,如果存在,请回退到使用name
标头上的Content-Type
参数值。
Content-Id
标头值可以是任何内容,您可以真正期望的是它是消息上下文中的唯一字符串。
显然,邮件HTML中的cid:URL引用了Content-Id
标头值,因此如果您希望在将附件保存到磁盘后能够在以后引用附件,那么您' ll还需要将Content-Id
保存在附件的数据库记录中。
答案 1 :(得分:0)
在HTML邮件中内联使用的图像不一定具有"真实文件名"。他们可能只使用CID。您应该将CID与图像一起存储在数据库中,然后通过数据库中的CID检索图像以显示它。
答案 2 :(得分:0)
OpenPop结果:
内容 - 描述:null
Content-ID:null
Content-Disposition:null
我正在尝试其他网络界面和相同的结果。 例如:Outlook Web界面
示例:
RichText中的HTML BODY
“img src =”cid:ii_iksd5tlv0_152f4c90885b6c5d“height =”398“width =”530“>
img src =“cid:ii_iksd5tmd1_152f4c90885b6c5d”height =“398”width =“530”>
>
原始图像文件名:DSC00011.jpg和DSC00018.jpg