【发布时间】:2016-03-03 17:13:01
【问题描述】:
我会使用 Indy Ver.10 的 TIdImap4 对象将电子邮件附件保存到文件中。
我得到了电子邮件的 UID,然后我使用这个代码:
lMsg := TIdMessage.Create(Self);
lImap.UIDRetrieveStructure(lUid, lMsg);
lMsg.MessageParts.CountParts;
if lMsg.MessageParts.AttachmentCount > 0 then
for lJ := 0 to lMsg.MessageParts.Count - 1 do
if (lMsg.MessageParts[lJ] is TIdAttachment) and
SameText(lMsg.MessageParts[lJ].Name, 'MyAttachment') then
lImap.UidRetrievePartToFile(lUid, lJ, lDimAllegato, lFileName, Trim(lMsg.MessageParts[lJ].ContentTransfer))
这一直有效到lMsg.MessageParts[lJ].ContentType = 'Text/Plain' 和
lMsg.MessageParts[lJ].ContentTransfer = '7bit',现在 UidRetrievePartToFile() 返回 False 并且没有创建文件。我想是因为
lMsg.MessageParts[lJ].ContentType = 'application/octet-stream' 和
lMsg.MessageParts[lJ].ContentTransfer = 'base64'.
我不熟悉这个主题,我需要更改代码以保存这种类型的附件?
我也试过:TIdAttachment(lMsg.MessageParts[lJ]).SaveToFile(lFileName)
和类似的,但创建的文件总是空的。
【问题讨论】:
标签: delphi base64 email-attachments indy10