我正在使用Bsalsa的嵌入式Web浏览器在Delphi中编写电子邮件客户端
我遇到了cid嵌入式附件的问题,例如:
<IMG src="cid:5D4219C71EAE43B1864AE9CB27C224A8@somehost">
我将附件存储在数据库中,但无法弄清楚如何将它们提供给浏览器。似乎自定义名字对象可能需要实现,但文档很少。
任何帮助都将不胜感激。
答案 0 :(得分:1)
我使用“可插拔协议”处理程序实现了它,它看起来更容易。从这里开始:http://msdn.microsoft.com/en-us/library/aa767916(VS.85).aspx和此处:http://www.bsalsa.com/protocols.html
对不起,我不能分享我写的代码,但它是为我工作的公司编写的,我对此有所限制。基本上,您需要一个com对象来实现正确的接口以获取数据并允许Web浏览器控件读取它们。
这是恕我直言的正确方法 - 改变邮件和存储临时数据可能会带来长期问题。
答案 1 :(得分:0)
最简单的解决方案是根据请求将“附件”提取到临时文件夹中,然后在显示之前更改源中的引用以指向这些临时文件。在过去,我使用diHTMLParser就是非常成功。
如果我没记错的话,邮件中包含这些mime附件以及一个并不总是存在的可选文件名,但是会有一个mime类型,所以你可能需要有一个转换表来获取附件的默认文件扩展名。此外,跟踪放在临时目录中的文件,并在关闭消息窗口后进行清理。如果允许一次打开多个消息,则允许名称冲突并生成唯一文件..签名通常具有相同的名称,但来自不同的人......如果来自John的消息是签名Mary,则可能会造成混淆。 :)