Отправка электронной почты из определенной учетной записи с помощью Outlook и Delphi - PullRequest
1 голос
/ 23 декабря 2011

Мне нужно иметь возможность использовать определенный адрес отправителя, когда я отправляю электронные письма из Delphi с помощью автоматизации Outlook. У меня сейчас работает код, но он использует учетную запись по умолчанию в Outlook, и мне нужно иметь возможность указать другую. Как это можно сделать?

Я сделал это в VBA, поэтому это должно быть возможно и в Delphi.

1 Ответ

0 голосов
/ 24 декабря 2011

Вероятно, ваши проблемы связаны с перечислением / индексацией коллекции учетных записей, что в Delphi несколько менее удобно, чем в VBA.

Я выложу пример кода ниже. Для краткости и удобства использования я использовал OleVariants и объявил olMailItem локально. В рабочем коде обязательно используйте раннее связывание вместо.

Кроме того, хорошо выглядите, уклоняясь от всех предупреждений безопасности, которые выдает Outlook при такой автоматизации.

const
  olMailItem = 0;

var
  application: OleVariant;
  mailItem: OleVariant;

begin
  application := getActiveOleObject( 'Outlook.Application' );

  mailItem := application.createItem( olMailItem );

  mailItem.recipients.add( 'someone@somewhere.com' );
  mailItem.subject := 'This is a subject';
  mailItem.body := 'StackOverflow... the best time to hang out at christmas.';

  // This line allows you to pick any account by name
  mailItem.sendUsingAccount := application.session.accounts.item( 'some account' );

  mailItem.send;
end;
...