Как отправить почту с определенного аккаунта? - PullRequest
0 голосов
/ 03 октября 2019

Я использую Office 365 (Outlook версии 1909, сборка 12026.20264).

Я настроил две учетные записи электронной почты (a@a.com и b@b.com) и один общий почтовый ящик (shared@b.com). ).

С моей учетной записью b@b.com у меня есть разрешение на отправку электронной почты с shared@b.com.

Я могу вручную отправлять электронную почту со всех учетных записей (a@a.com,b@b.com, shared@b.com).

У меня есть код VBA для отправки электронной почты с shared@b.com с использованием свойства SentOnBehalfOfName.

Sub TEST()
  Dim origEmail As MailItem
  Dim replyEmail As MailItem

  Set origEmail = Application.ActiveWindow.Selection.Item(1)
  Set replyEmail = Application.CreateItemFromTemplate("C:\...\Template.oft")

  replyEmail.SentOnBehalfOfName = "shared@b.com"
  replyEmail.HTMLBody = replyEmail.HTMLBody & origEmail.Reply.HTMLBody
  replyEmail.Subject = "RE:" + origEmail.Subject

  replyEmail.Display
End Sub

Обычно это отправляет электронные письмаправильно. Я вижу, что они переходят в отправленную папку в учетной записи b@b.com.

Иногда он пытается отправить электронную почту, используя учетную запись a@a.com (у которой нет разрешения на отправку электронной почты с shared @ b). .com). Я получаю сообщение об ошибке на a@a.com, и письмо не отправляется.

Как я могу изменить свой код, чтобы каждый раз, когда я отправляю электронное письмо с shared@b.com, он использовал мой b @ b.com account?

Примечание. Я установил учетную запись b@b.com в качестве учетной записи по умолчанию.

1 Ответ

1 голос
/ 04 октября 2019

Необходимо установить для свойства SendUsingAccount объект Account, соответствующий почтовому ящику b@b.com.

Sub TEST()
  Dim origEmail As MailItem
  Dim replyEmail As MailItem

  Set origEmail = Application.ActiveWindow.Selection.Item(1)
  Set replyEmail = Application.CreateItemFromTemplate("C:\...\Template.oft")

  for each acc in Application.Session.Accounts
    if acc.DisplayName = "b@b.com" Then 
      replyEmail.SendUsingAccount = acc
      Exit for
    End If
  next 

  replyEmail.SentOnBehalfOfName = "shared@b.com"
  replyEmail.HTMLBody = replyEmail.HTMLBody & origEmail.Reply.HTMLBody
  replyEmail.Subject = "RE:" + origEmail.Subject

  replyEmail.Display
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...