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;