如何使用 indy 10 和 delphi 7 接收带有文件附件的电子邮件?
问问题
8594 次
3 回答
5
这是有效的 Indy 10 代码。“文件”是一个字符串列表,其中包含已下载的附件列表 - 我对附件感兴趣,而不是字母本身。
with IdPop31 do
begin
ConnectTimeout := 5000;
Connect;
try
files.Clear;
for i := 1 to checkmessages do
begin
msg.clear;
flag := false;
if retrieve (i, msg) then
begin
for j := 0 to msg.MessageParts.Count-1 do
begin
if msg.MessageParts[j] is TIdAttachment then
begin
with TIdAttachment(msg.MessageParts[j]) do
begin
s := IncludeTrailingPathDelimiter(mydir) + ExtractFileName(FileName);
log ('Downloaded ' + s);
if not FileExists(s) then
begin
SaveToFile(s);
files.Add(s);
end;
end;
end;
flag := true;
end;
end;
end;
if flag then Delete(i); // remove the email from the server
end;
finally
Disconnect;
end
end;
于 2011-03-17T13:35:45.207 回答
4
附件作为TIdAttachment
对象存储在TIdMessage.MessageParts
集合中。
于 2011-03-17T09:17:00.513 回答
0
您的代码工作正常,但需要在定义“s”的“开始-结束”部分进行更正。如果“文件名”为空程序必须跳过保存。可能你剪断了这条线,“结束”就挂了。
于 2016-10-22T11:15:20.700 回答