Delphi - Outlook OLE -当前用户覆盖发送使用帐户

e5nszbig  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(137)

我正在尝试使用Outlook从特定帐户发送电子邮件。
用户在Outlook应用程序中有两个或多个帐户,自动化需要使用特定帐户发送电子邮件。
为此,我按照OLE documentation的要求使用了mailItem.SendUsingAccount属性。
示例如下。
问题是显示生成的电子邮件时-“发件人”字段使用CurrentUser帐户,而不是SendUsingAccount属性设置的帐户。
我做错了什么还是错过了什么?

procedure TOutlookOLE.AssignSenderFromAccounts(const _MailFromEmail: string);
var
  i: integer;
  NewSender: OleVariant;
  sendermail: string;

  report: string;
begin
  if Connected then
  begin
    i := OutlookAppObject.Session.Accounts.Count;

    // Cycle through all accounts to identify correct one
    for I := 1 to OutlookAppObject.Session.Accounts.Count do
    begin

      NewSender  := OutlookAppObject.Session.Accounts.Item(i);
      sendermail := VarToStr(NewSender.SmtpAddress);

      // Match accounts based on email address
      if NOT VarIsNull(NewSender) AND SameText(sendermail, _MailFromEmail) then
      begin

        // Match FOUND and set to mail Item ...
        // ... but when Displayed THIS IS NOT THE CASE
        if MailCreated then
              OutlookMailItem.SendUsingAccount := NewSender
        else  raise Exception.Create('Outlook OLE Exception: Mail object not created.');
        break;
      end;
    end;
  end
  else raise Exception.Create('Outlook OLE Exception: Outlook not connected.');
end;
wqsoz72f

wqsoz72f1#

这是已知的Outlook问题-尝试同时更新PR_SENT_REPRESENTING_EMAIL_ADDRESS MAPI属性:

OutlookMailItem.PropertyAccessor.SetProperty('http://schemas.microsoft.com/mapi/proptag/0x0065001F', WideString(_MailFromEmail));

相关问题