所以我在收到的Pop3消息上有一个附件,
Msg.MessageParts.Items[msgpart] as TidAttachmentFile
但是,是否有可能以Msg.MessageParts.Items[msgpart].ContentTransfer
指定的格式(所以base64 ascii)获取此附加文件的内容,而不是创建临时文件,调用SaveToFile,然后重新读取文件并重新转换回来到base64?
答案 0 :(得分:2)
如果TIdMessage.NoDecode
设置为False,则为no,则不可能。当NoDecode
为False时,TIdMessageClient
会在从套接字读取电子邮件时对电子邮件进行解码,并将已解码的二进制数据放入附件对象中。获取原始base64数据的唯一方法是将TIdMessage.NoDecode
设置为True并手动解析原始电子邮件数据(它按原样存储在TIdMessage.Body
中),因为您实际上将禁用{{1}整个解码系统。
另一方面,如果您只想避开临时文件,可以使用TIdMessageClient's
事件让Indy创建TIdMessage.OnCreateAttachment
个对象而不是默认的TIdAttachmentMemory
个对象。 base64仍然会被自动解码并作为二进制文件存储在附件中,但至少附件只能在内存中,因此您的重新编码会更快。