Изменить адрес общей учетной записи на адрес учетной записи по умолчанию, где режим кэширования отключен - PullRequest
0 голосов
/ 28 января 2019

Мы используем 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))

Без кода (из коробки)по умолчанию):

  1. При включенном режиме кэширования каждое действие (новое, ответ и т. д.) отображается в поле from как mailbox<n>_at_domain_dot_com.
  2. При отключенном режиме кэширования только новое показываетиз коробки как mailbox<n>_at_domain_dot_com.Все остальные действия показывают mailbox<n> (без домена).

С кодом:

  1. При включенном режиме кэширования каждое действие (новое, ответ и т. Д.) Показывает поле fromкак учетная запись пользователя (по умолчанию).
  2. При отключенном режиме кэширования работают только новые.Все остальные действия имеют поле 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
...