Мы используем Exchange 2010/16 с Outlook 2010/16.У нас есть групповые (или общие) почтовые ящики, и они добавляются в Outlook в качестве надлежащей учетной записи (а не просто дополнительных почтовых ящиков) для использования встроенной функции архивации Exchange.
Мы не хотим отправлять / получать из почтовых ящиков группы.Почтовые ящики групп - это центральное место, куда можно отправлять электронные письма с помощью правил транспорта для входящей и исходящей электронной почты.Мы не установили права «Отправить как» или «Отправить от имени» для почтовых ящиков группы.
При ответе / ответе на все / переслать и т. Д. В поле «from» по умолчанию используется общий почтовый ящик, и пользователь должен вручную изменить поле «from».
Я наткнулся на свойство SendUsingAccount
для почтовых отправлений.Я подключаюсь к событию Inspector_Activate
, поэтому любой почтовый элемент, который не был отправлен, перехватывается.Это касается Нового, Ответить, Ответить всем, Переслать, Переслать как Приложение.
Это то, что я испытываю.Предположим, что почтовый ящик пользователя mailbox1_at_domain_dot_com
(который сопоставлен с Session.Accounts(1)
), а общий почтовый ящик mailbox2_at_domain_dot_com
(который сопоставлен с Session.Accounts(2)
)
Без кода (из коробки)по умолчанию):
- При включенном режиме кэширования каждое действие (новое, ответ и т. д.) отображается в поле from как
mailbox<n>_at_domain_dot_com
. - При отключенном режиме кэширования только новое показываетиз коробки как
mailbox<n>_at_domain_dot_com
.Все остальные действия показывают mailbox<n>
(без домена).
С кодом:
- При включенном режиме кэширования каждое действие (новое, ответ и т. Д.) Показывает поле fromкак учетная запись пользователя (по умолчанию).
- При отключенном режиме кэширования работают только новые.Все остальные действия имеют поле from, оставаясь общей учетной записью.Как и в стандартных настройках по умолчанию выше, когда я нажимаю на новое электронное письмо, поле from заполняется
mailbox<n>_at_domain_dot_com
, но при любом другом действии оно заполняется mailbox<n>
(без домена).Если я вручную изменю поле «из» на общий почтовый ящик, он показывает mailbox2_at_domain_dot_com
(с доменом), после чего я могу запустить подпрограмму ChangeSender()
из редактора и увидеть, как поле «из» переходит к учетной записи по умолчанию.
Debug.Print
перед вызовом ChangeSender()
возвращает общую учетную запись, а Debug.Print
после вызова ChangeSender()
возвращает учетную запись по умолчанию (правильно!) Независимо от конфигурации Outlook. Таким образом, код работает, нов некоторых конфигурациях окно инспектора не обновляется с SendUsingAccount
.
ThisOutlookSession:
Option Explicit
Private WithEvents Inspectors As Outlook.Inspectors
Private WithEvents Inspector As Outlook.Inspector
Private WithEvents MailItem As Outlook.MailItem
Private Sub Application_Startup()
Set Inspectors = Application.Inspectors
End Sub
Private Sub Inspectors_NewInspector(ByVal NewInspector As Outlook.Inspector)
Set Inspector = NewInspector
End Sub
Private Sub Inspector_Activate()
Set MailItem = Inspector.CurrentItem
If MailItem.Class = olMail And Not MailItem.Sent Then
Debug.Print "Before: " & MailItem.SendUsingAccount
Call ChangeSender(MailItem)
Debug.Print "After: " & MailItem.SendUsingAccount
End If
End Sub
Private Sub Inspector_Close()
Set MailItem = Nothing
Set Inspector = Nothing
End Sub
Module1:
Function DefaultMailAccount() As Outlook.Account
Set DefaultMailAccount = Application.Session.Accounts(1)
Exit Function
End Function
Sub ChangeSender(ByRef Item As Outlook.MailItem)
Item.SendUsingAccount = DefaultMailAccount()
End Sub