首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

idpop3 收邮件,为什么附件为0?解决办法

2012-03-11 
idpop3 收邮件,为什么附件为0?组件 :idpop3,idmessagefor j:0 to IdMessage1.MessageParts.Count-1 do//

idpop3 收邮件,为什么附件为0?
组件 :idpop3,idmessage

for j:=0 to IdMessage1.MessageParts.Count-1 do //查看邮件所有内容,保证能够下载所有附件
  try
  if (IdMessage1.MessageParts.Items[j] is TIdAttachment) then //匹配邮件条目是否是附件
  begin
  TIdAttachment(IdMessage1.MessageParts.Items[j]).SaveToFile('c:/'+
  TIdAttachment(IdMessage1.MessageParts.Items[j]).FileName); //以原有文件名保存附件在指定目录
  end;
  except
  continue;
  end;

这是论坛里的一段代码。我按此测试时,编译没有问题,但就是读不到附件。随后我用showmessage读IdMessage1.MessageParts.Count的信息,发现为0,attachment也是0,是什么原因?邮箱明明有附件的,文件名为英文。
请大家帮忙看看。
谢谢。
分本来就不多,请大家见谅。

[解决办法]
网上有挺多关于接收邮件的例子,可以多看看。
附件有多大?正常的邮件内容能接受到吗?
之前写过接收邮件的,for循环用的是idpop1.checkmessages获取邮件数量。
idpop1.retrieve(i+1,idmessage1);
if imessage1.messageparts.item[1] is tidattachment then
[解决办法]
这个可能跟Indy控件有关吧
[解决办法]
这是indy10的pop例子,供参考

POP.Retrieve(lvHeaders.Selected.Index + 1, Msg);

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

热点排行