未从 Outlook 获得正确的 return 值
Not getting correct return value from Outlook
我使用以下代码通过 Outlook 2010 发送电子邮件,但是行
Result := MailItem.Sent;
return一个错误
The item has been moved or deleted
我该如何解决这个问题,以便函数为我提供可用的 return 值?
function olSendMail(aFrom, aSubject, aBody, aTo, aCC, aBcc: string; aMailFiles: TStringList; aReceipt: boolean = False; aPreview: boolean = True): boolean;
var
Outlook: OleVariant;
MailItem: OleVariant;
i: integer;
MailInspector: variant;
const
olMailItem = [=12=]000000;
begin
try
try
Outlook := GetActiveOleObject('Outlook.Application');
except
Outlook := CreateOleObject('Outlook.Application');
end;
MailItem := Outlook.CreateItem(olMailItem);
if olAccountValid(aFrom) then
MailItem.SendUsingAccount := Outlook.Session.Accounts.Item(aFrom);
MailItem.To := aTo;
MailItem.Cc := aCc;
MailItem.Bcc := aBcc;
MailItem.Subject := aSubject;
MailItem.Body := aBody;
for i := 0 to aMailFiles.Count - 1 do
MailItem.Attachments.Add(aMailFiles.Strings[i]);
MailItem.ReadReceiptRequested := aReceipt;
MailItem.OriginatorDeliveryReportRequested := aReceipt;
if aPreview = True then
begin
MailInspector := MailItem.GetInspector;
MailInspector.Display(True);
end
else
MailItem.Send;
Result := MailItem.Sent;
except
on E:Exception do
begin
Logfile.Error('U_Mailing.Outlook.SendMailOutlook: ' + E.Message);
Result := False;
end;
end;
end;
调用 Sent 后,唯一允许的操作是释放对 MailItem 对象的引用 - 它现在属于后台处理程序,将异步发送,然后移动到已发送邮件文件夹。仅在那一刻(现在将是一条不同的消息)已发送 属性 将为真,并且将填充所有与发件人相关的属性。
我使用以下代码通过 Outlook 2010 发送电子邮件,但是行
Result := MailItem.Sent;
return一个错误
The item has been moved or deleted
我该如何解决这个问题,以便函数为我提供可用的 return 值?
function olSendMail(aFrom, aSubject, aBody, aTo, aCC, aBcc: string; aMailFiles: TStringList; aReceipt: boolean = False; aPreview: boolean = True): boolean;
var
Outlook: OleVariant;
MailItem: OleVariant;
i: integer;
MailInspector: variant;
const
olMailItem = [=12=]000000;
begin
try
try
Outlook := GetActiveOleObject('Outlook.Application');
except
Outlook := CreateOleObject('Outlook.Application');
end;
MailItem := Outlook.CreateItem(olMailItem);
if olAccountValid(aFrom) then
MailItem.SendUsingAccount := Outlook.Session.Accounts.Item(aFrom);
MailItem.To := aTo;
MailItem.Cc := aCc;
MailItem.Bcc := aBcc;
MailItem.Subject := aSubject;
MailItem.Body := aBody;
for i := 0 to aMailFiles.Count - 1 do
MailItem.Attachments.Add(aMailFiles.Strings[i]);
MailItem.ReadReceiptRequested := aReceipt;
MailItem.OriginatorDeliveryReportRequested := aReceipt;
if aPreview = True then
begin
MailInspector := MailItem.GetInspector;
MailInspector.Display(True);
end
else
MailItem.Send;
Result := MailItem.Sent;
except
on E:Exception do
begin
Logfile.Error('U_Mailing.Outlook.SendMailOutlook: ' + E.Message);
Result := False;
end;
end;
end;
调用 Sent 后,唯一允许的操作是释放对 MailItem 对象的引用 - 它现在属于后台处理程序,将异步发送,然后移动到已发送邮件文件夹。仅在那一刻(现在将是一条不同的消息)已发送 属性 将为真,并且将填充所有与发件人相关的属性。