1

因此,我在传入的 Pop3 消息中有一个附件, Msg.MessageParts.Items[msgpart] as TidAttachmentFile 但是,是否有可能以 (so base64 ascii) 指定的格式获取此附件的内容,Msg.MessageParts.Items[msgpart].ContentTransfer而不是创建一个临时文件,调用 SaveToFile,然后重新读取文件并重新转换回base64?

4

1 回答 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 回答