因此,我在传入的 Pop3 消息中有一个附件,
Msg.MessageParts.Items[msgpart] as TidAttachmentFile
但是,是否有可能以 (so base64 ascii) 指定的格式获取此附件的内容,Msg.MessageParts.Items[msgpart].ContentTransfer
而不是创建一个临时文件,调用 SaveToFile,然后重新读取文件并重新转换回base64?
问问题
473 次
1 回答
2
如果TIdMessage.NoDecode
设置为 False,则不,这是不可能的。何时NoDecode
为 False,TIdMessageClient
在从套接字读取电子邮件时对其进行解码,并将解码的二进制数据放入附件对象中。获取原始 base64 数据的唯一方法是设置TIdMessage.NoDecode
为 True 并手动解析原始电子邮件数据(它按原样存储在 中TIdMessage.Body
),因为您将有效地禁用TIdMessageClient's
整个解码系统。
另一方面,如果你只是想避免临时文件,你可以使用TIdMessage.OnCreateAttachment
事件让 Indy 创建TIdAttachmentMemory
对象而不是默认TIdAttachmentFile
对象。base64 仍将自动解码并以二进制形式存储在附件中,但至少附件将仅在内存中,因此您的重新编码会更快。
于 2013-06-05T19:05:20.617 回答