我会使用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)
和类似的,但创建的文件总是空的。
谢谢你,它的工作原理!只需lParams [lJ] .ImapPartNumber是lParts [lJ] .ImapPartNumber – user1573626