Отправка письма через определенную учетку - VB
Формулировка задачи:
Здравствуйте.
Проблема следующая: у пользователей в аутлуке по 2 учетки: Exchange - для почты внутри предприятия, и внешняя. Надстройка для аутлука должна отсылать письмо именно через Exchange,
вне зависимости от того, какая учетка используется по умолчанию.
Пытался решить двумя способами:
1) Использование
Письмо помещается в "черновики", с пометкой "письмо будет отправлено с учетной записи user@pmp.local" (все правильно, это учетка Exchange), но после нажатия "отправить и получить" - отправляется с учетки по умолчанию.
Соответственно, если по умолчанию стоит внешняя учетка - письмо никуда не доходит.
2) Отправка письма через cdo с прямым указанием адреса отправителя. Но в этом случае для аутентификации на сервере требуется логин и пароль, без них - не работает. Логин и пароль используются от доменной учетки пользователя винды. Как я понимаю, вытащить пароль с помощью VB - нереально...
Конечно, можно определить, каков тип учетки по умолчанию, и если не Exchange - уведомить пользователя, чтоб сам переключил.
Но, может, кто-нибудь сможет подсказать нормальный вариант решения?
Проблема следующая: у пользователей в аутлуке по 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д