问题解决得话给500分。
for I := 1 to Pop.CheckMessages do
begin
   MailMessage:= TIDMessage.Create(nil);
   Pop.Retrieve(I,MailMessage);
   MailMessage.SaveToFile('D:\mail\filename.eml');   MailMessage.Clear;
   FreeAndNil(MailMessage);
end;邮件可以正常收取,速度也很快。在收下的邮件中
1. 保存下来邮件内容消失。但通过网络软件监测,邮件内容的确是收下来了。在MailMessage中,Body为空,MailMessage.MessageParts.Items[0] 里面存放了内容,看了Indy 的IdMessage源文件。但不知道为什么不能存下来。
2. 邮件的格式不正确。就是Boundary的编制有问题。   

解决方案 »

  1.   

    忘了说,是Indy9.0.14.
    delphi7
    谢谢
      

  2.   

    for intIndex := 0 to Pred(Msg.MessageParts.Count) do
          begin
             if (Msg.MessageParts.Items[intIndex] is TIdAttachment) then
                begin //附件
                   pnlAttachments.visible := true;
                   li := lvMessageParts.Items.Add;
                   li.ImageIndex := 8;
                   li.Caption := TIdAttachment(Msg.MessageParts.Items[intIndex]).Filename;
                   li.SubItems.Add(TIdAttachment(Msg.MessageParts.Items[intIndex]).ContentType);
                end
             else
                begin //正文
                   if Msg.MessageParts.Items[intIndex] is TIdText then
                      begin
                         Memo1.Lines.Clear;
                         Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);
                      end
                end;
          end;