Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как настроить Outlook для использования конкретного аккаунта при отправке электронных писем

Delphi , Технологии , OLE

Как настроить Outlook для использования конкретного аккаунта при отправке электронных писем

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

Проблема

Разработчики, использующие возможности OLE для взаимодействия с Outlook, сталкиваются с проблемой, когда при попытке указать конкретный аккаунт для отправки сообщения через свойство SendUsingAccount объекта MailItem, в поле "От" письма отображается аккаунт текущего пользователя, а не тот, который был установлен.

Пример кода

procedure TOutlookOLE.AssignSenderFromAccounts(const _MailFromEmail: string);
var
  i: integer;
  NewSender: OleVariant;
  sendermail: string;
begin
  // Цикл по всем аккаунтам для определения нужного
  for I := 1 to OutlookAppObject.Session.Accounts.Count do
  begin
    NewSender := OutlookAppObject.Session.Accounts.Item(i);
    sendermail := VarToStr(NewSender.SmtpAddress);

    if NOT VarIsNull(NewSender) AND SameText(sendermail, _MailFromEmail) then
    begin
      // Установка аккаунта для отправки
      if MailCreated then
        OutlookMailItem.SendUsingAccount := NewSender
      else
        raise Exception.Create('Outlook OLE Exception: Mail object not created.');
      break;
    end;
  end;
end;

Решение проблемы

После получения ответа от пользователя с никнеймом Dmitri, был предложен обновленный метод, который включает в себя установку MAPI свойства PR_SENT_REPRESENTING_EMAIL_ADDRESS. Это свойство позволяет корректно указать адрес электронной почты для отправки сообщения, даже если используется свойство SendUsingAccount.

const PR_SENT_REPRESENTING_EMAIL_ADDRESS = 'http://schemas.microsoft.com/mapi/proptag/0x0065001F';
...
if MailCreated then
begin
  OutlookMailItem.SendUsingAccount := NewSender;
  OutlookMailItem.PropertyAccessor.SetProperty(
    PR_SENT_REPRESENTING_EMAIL_ADDRESS,
    WideString(_MailFromEmail));
end;

Подтвержденный ответ

Известная проблема Outlook заключается в том, что для корректной работы с аккаунтами необходимо также обновить MAPI свойство PR_SENT_REPRESENTING_EMAIL_ADDRESS. Это действие позволяет указать, что письмо должно быть отправлено с использованием конкретного электронного адреса, даже если в настройках Outlook указан другой аккаунт по умолчанию.

Заключение

Используя предложенные методы, разработчики могут настраивать Outlook для отправки электронных писем с конкретного аккаунта, что особенно важно в ситуациях, когда пользователь имеет несколько аккаунтов и хочет автоматизировать процесс отправки с использованием определенного аккаунта. Приведенный пример кода на Object Pascal (Delphi) демонстрирует, как это можно сделать на практике.

Создано по материалам из источника по ссылке.

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


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: OLE ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 16:07:31/0.0031509399414062/0