【发布时间】:2020-10-29 11:41:19
【问题描述】:
我编写了一些代码来读取 Outlook 收件箱中的电子邮件并收集附件。
这工作得很好。我正在使用 Outlook 2019/Office 365。
我可以同时使用Mail.SenderEmailAddress 或Mail.Sender.Address 来获取发件人的电子邮件地址。
在使用 Outlook 2016 将我的应用程序部署到另一台计算机时,我收到以下错误:
EOleError: 自动化对象不支持方法 'Sender'
Mail.SenderEmailAddress 也一样
Outlook 2016 或 2019 具有相同的代码流。见Outlook versions, build numbers and other trivia。
您能否帮助理解为什么我在客户的计算机上出现此类错误以及如何解决该问题?
您是否知道可以顺利完成此任务的免费/商业库或组件?
这与我关于Sending Outlook Email with Delphi 的其他问题有某种联系。
try
Outlook:=GetActiveOleObject('Outlook.Application') ;
except
Outlook:=CreateOleObject('Outlook.Application') ;
end;
try
oNameSpace := Outlook.GetNamespace('MAPI');
oNameSpace.Logon;
Inbox:= oNameSpace.GetDefaultFolder(6);
iNbMail:= Inbox.Items.Count;
for i:= iNbMail downto 1 do
begin
if VarIsNull(Inbox.Items[i]) or VarIsEmpty(Inbox.Items[i]) then
Continue;
Mail:= Inbox.Items[i];
EmailAddress:= Mail.Sender.Address;
// EmailAddress:= Mail.SenderEmailAddress;
UnReadFlag:= Mail.UnRead;
iNbAttach := Mail.Attachments.Count;
for j := iNbAttach downto 1 do
begin
Attachment:= Mail.Attachments[j];
if ExtractFileExt(Attachment.FileName) = '.pdf' then
begin
SaveName:= TPath.Combine(InboxFolder, Attachment.FileName);
Attachment.SaveAsFile(SaveName);
end;
end;
Mail.UnRead:= False;
end;
finally
Outlook:= Unassigned;
oNameSpace:= Unassigned;
Inbox:= Unassigned;
Mail:= Unassigned;
end;
【问题讨论】:
-
您能否编辑您的问题并显示您在使用 Mail.Sender.Address 时使用的工作代码?
-
我添加了这段代码
标签: delphi outlook firemonkey ole