Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何向嵌入式浏览器提供cid电子邮件附件_Delphi_Email_Attachment_Embedded Browser - Fatal编程技术网

Delphi 如何向嵌入式浏览器提供cid电子邮件附件

Delphi 如何向嵌入式浏览器提供cid电子邮件附件,delphi,email,attachment,embedded-browser,Delphi,Email,Attachment,Embedded Browser,我正在使用Bsalsa的嵌入式web浏览器在Delphi中编写电子邮件客户端 我对cid嵌入式附件有问题,例如: <IMG src="cid:5D4219C71EAE43B1864AE9CB27C224A8@somehost"> 我将附件存储在数据库中,但不知道如何将它们提供给浏览器。似乎需要实现自定义名字对象,但文档很少 任何帮助都将不胜感激。最简单的解决方案是根据请求将“附件”提取到临时文件夹中,然后在显示之前更改源中的引用以指向这些临时文件。在过去,我已经习惯了这一点,并

我正在使用Bsalsa的嵌入式web浏览器在Delphi中编写电子邮件客户端

我对cid嵌入式附件有问题,例如:

<IMG src="cid:5D4219C71EAE43B1864AE9CB27C224A8@somehost">

我将附件存储在数据库中,但不知道如何将它们提供给浏览器。似乎需要实现自定义名字对象,但文档很少


任何帮助都将不胜感激。

最简单的解决方案是根据请求将“附件”提取到临时文件夹中,然后在显示之前更改源中的引用以指向这些临时文件。在过去,我已经习惯了这一点,并取得了巨大的成功


如果我没记错的话,消息包含这些mime附件以及一个可选的文件名,该文件名并不总是存在,但将具有mime类型,因此您可能需要有一个翻译表才能获得附件的默认文件扩展名。此外,请跟踪临时目录中的文件,并在关闭消息窗口后进行清理。如果允许同时打开多封邮件,请允许名称冲突并生成唯一的文件。。签名有相同的名字,但来自不同的人是很常见的。。。如果您的邮件由John签名为Mary,则可能会令人困惑。:)

我用一个“可插拔协议”处理程序实现了它,它比看起来更简单。从这里开始:在这里:

很抱歉,我不能分享我写的代码,但它是为我工作的公司写的,我对此有限制。基本上,您需要一个com对象来实现适当的接口来获取数据并允许web浏览器控件读取数据


这是正确的做法——从长远来看,更改邮件和存储临时数据可能会带来问题

是的,这就是我目前正在做的,但我希望找到一个“合适的”解决方案。在我看来,命名方法就像是用大锤把大头钉敲入巴尔沙木。它是有效的,但是当你可以用手指的时候需要更多的努力。好吧,理论上,名字是正确的解决方案,比起保存到临时文件等,它更像是一种黑客行为,问题只在于复杂的实现,这对你来说很好,Daniel(供未来读者参考),这可能是用于阅读电子邮件(CID协议)把人们的电子邮件写到临时文件中也不是很好的做法。。太难确保安全/隐私。我发现了这个问答,因为我正在更新一个应用程序,我只希望被接受的答案能给出更多的细节,但要理解为什么他们不能。