Indy 收取邮件问题,保存邮件内容不正常

yhcs 2005-04-07 03:59:54
问题解决得话给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的编制有问题。

...全文
112 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yhcs 2005-04-08
  • 打赏
  • 举报
回复
是Indy的问题,Indy的TidMessage对Mime编码支持不够,存取的时候对格式判断不足。
谢谢各位帮顶。
vinsonshen 2005-04-07
  • 打赏
  • 举报
回复
up
newc_k 2005-04-07
  • 打赏
  • 举报
回复
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;
yhcs 2005-04-07
  • 打赏
  • 举报
回复
忘了说,是Indy9.0.14.
delphi7
谢谢
constantine 2005-04-07
  • 打赏
  • 举报
回复
SaveToFile没有找到
constantine 2005-04-07
  • 打赏
  • 举报
回复
晕,indy8居然没有这个属性

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧