Отправка письма через определенную учетку - VB

Узнай цену своей работы

Формулировка задачи:

Здравствуйте.
Проблема следующая: у пользователей в аутлуке по 2 учетки: Exchange - для почты внутри предприятия, и внешняя. Надстройка для аутлука должна отсылать письмо именно через Exchange,
вне зависимости от того, какая учетка используется по умолчанию.
Пытался решить двумя способами:
1) Использование

sendusingaccount

и отправка с помощью redemption.safemailitem.
Письмо помещается в "черновики", с пометкой "письмо будет отправлено с учетной записи user@pmp.local" (все правильно, это учетка Exchange), но после нажатия "отправить и получить" - отправляется с учетки по умолчанию.
Соответственно, если по умолчанию стоит внешняя учетка - письмо никуда не доходит.

2) Отправка письма через cdo с прямым указанием адреса отправителя. Но в этом случае для аутентификации на сервере требуется логин и пароль, без них - не работает. Логин и пароль используются от доменной учетки пользователя винды. Как я понимаю, вытащить пароль с помощью VB - нереально...

В коде обильно успользуются примеры с форума sql.ru, за что большое-пребольшое спасибо!


Конечно, можно определить, каков тип учетки по умолчанию, и если не Exchange - уведомить пользователя, чтоб сам переключил.
Но, может, кто-нибудь сможет подсказать нормальный вариант решения?

Решение задачи: «Отправка письма через определенную учетку»

textual
Листинг программы
Sub Mail_()
'Only working in Office 2007-2016
'Don't forget to set a reference to Outlook in the VBA editor
    Dim OutApp As Outlook.Application
    Dim OutMail As Outlook.MailItem
    Dim strbody As String

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(olMailItem)

    strbody = "Hi there" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2" & vbNewLine & _
              "This is line 3" & vbNewLine & _
              "This is line 4"

    On Error Resume Next
    With OutMail
        .To = "d.medvedev@controlgate.ru"
        .CC = ""
        .BCC = ""
        .Subject = "This is the Subject line"
        .Body = strbody

        'SendUsingAccount is new in Office 2007
        'Change Item(1)to the account number that you want to use
        .SendUsingAccount = OutApp.Session.Accounts.Item(1)

        .Send   'or use .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы