2011-07-06 534 views
6

我将电子邮件及其附件存储在数据库中。我正在使用WPF WebBrowser和NavigateToString方法来显示电子邮件的html正文。它可以工作,但是当电子邮件使用带有内容标识(cid)的嵌入式图像时,我无法显示它们。当我将电子邮件保存在数据库中时,我将所有嵌入的图像保存为附件。我可以在当前用户的临时文件中创建和存储图像,并用用户磁盘上的绝对路径替换cid引用,但我认为这不是最好的方式...如何使用嵌入式图像(cid)显示html电子邮件?

你有什么想法吗?

回答

16

我终于找到了一个好办法:

我更换了所有的图像使用Base64图像数据(RFC 2557)这样的CID引用:

<img src="data:image/png;base64,RAAAtuhhx4dbgYKAAA7...more data....." alt="test"> 

您可以使用下面的代码来生成BASE64字符串:

string base64Str = Convert.ToBase64String(File.ReadAllBytes(@"C:\Temp\test.png")); 

备注:不使用IE6张贴您的ANS工作

+1

谢谢WER! –

+2

迷人而优雅。附: F * ck IE 6. –

+0

非常优雅,但要小心:[浏览器对数据url的大小限制](http://stackoverflow.com/q/695151/87698)。 – Heinzi

相关问题