Отправка письма через определенную учетку - 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