Изменить поле "От"

У меня есть один адрес электронной почты Outlook, настроенный в моей учетной записи Outlook, скажем, «[email protected]».

У меня есть еще одна «учетная запись электронной почты», скажем, «[email protected]», которая служит не более чем указателем на мою учетную запись @ xxx.com.

В Outlook нет настроек для учетной записи указателя, кроме моей возможности ввести ее в поле «От». У меня Outlook настроен на ручное изменение поля «От» между @ xxx.com и @ zzz.net.

Поскольку мой адрес электронной почты @ xxx.com является фактическим адресом электронной почты, Outlook по умолчанию использует этот адрес электронной почты в поле «От». Я бы хотел, чтобы это было наоборот, т.е. в любом электронном письме, которое я отправляю, в поле «От» указано «[email protected]».

Я попытался использовать следующий код:

Public WithEvents myItem As Outlook.MailItem

Private Sub Application_ItemLoad(ByVal Item As Object)
    If (TypeOf Item Is MailItem) Then
        Set myItem = Item
    End If
End Sub

Private Sub FromField()
    With myItem
        .SentOnBehalfOfName = "[email protected]"
        .Display
    End With
End Sub

Private Sub myItem_Open(Cancel As Boolean)
    FromField
End Sub

Размещение подпрограммы FromField в Application_ItemLoad не помогло.


person ExPerseides    schedule 24.10.2015    source источник
comment
Это для учетной записи Exchange? Вы имеете в виду, что хотите, чтобы получатели видели электронную почту, приходящую с одного из ваших псевдонимов (прокси) SMTP-адресов?   -  person Dmitry Streblechenko    schedule 25.10.2015
comment
Итак, моя старшая школа дала нам учетную запись электронной почты на всю жизнь - и да, это учетная запись Exchange, которую я использую в качестве основного адреса электронной почты. Моя аспирантура дала нам указатель электронной почты. Моему консультанту не нравится тот факт, что моя электронная почта приходит с моего старого школьного домена, и он боится, что это может сбить с толку спонсоров / поставщиков. Вот о чем я говорю. Верхний адрес электронной почты - это фактическая учетная запись, а нижний - псевдоним. Я хочу, чтобы все мои электронные письма были отправлены. Я просто не хочу вручную менять это каждый раз, когда отправляю электронное письмо.   -  person ExPerseides    schedule 25.10.2015
comment
Находятся ли эти учетные записи на разных серверах? Или это тот же почтовый ящик?   -  person Dmitry Streblechenko    schedule 25.10.2015
comment
Один находится на сервере обмена моей старой школы. Другой - this, который указывает на мою старую учетную запись.   -  person ExPerseides    schedule 25.10.2015
comment
Сервер Exchange не позволит вам отправлять сообщения от имени другой учетной записи, если только он не с того же сервера, и у вас есть право отправлять сообщения от имени этого пользователя. Почему бы не открыть обе учетные записи в Outlook?   -  person Dmitry Streblechenko    schedule 25.10.2015
comment
Вторая учетная запись не является учетной записью. Он указывает на первое. И Outlook определенно позволит мне это сделать. Я делаю это вручную, как видно на картинке из последнего комментария. Вопрос не в том, могу ли я это сделать, а в том, как автоматизировать это с помощью макроса VBA.   -  person ExPerseides    schedule 25.10.2015
comment
Чтобы уточнить, мне просто нужна помощь в настройке макроса, чтобы каждый раз, когда я отправляю электронное письмо, он заполнял поле «От» выбранной мной учетной записью электронной почты.   -  person ExPerseides    schedule 25.10.2015
comment
Значит, это один и тот же почтовый ящик Exchange, и у вас есть основной SMTP-адрес и прокси-адрес, обрабатываемые одним и тем же почтовым ящиком?   -  person Dmitry Streblechenko    schedule 25.10.2015
comment
Ага, в этом суть. Я хочу, чтобы электронные письма автоматически помещали адрес прокси в поле От, а не основной адрес SMTP.   -  person ExPerseides    schedule 25.10.2015


Ответы (2)


Вам необходимо использовать свойство SendUsingAccount класса MailItem, которое позволяет для установки объекта Account, представляющего учетную запись, под которой должен быть отправлен MailItem.

Sub SendUsingAccount() 
 Dim oAccount As Outlook.account 
 For Each oAccount In Application.Session.Accounts 
  If oAccount.AccountType = olPop3 Then 
   Dim oMail As Outlook.MailItem 
   Set oMail = Application.CreateItem(olMailItem) 
   oMail.Subject = "Sent using POP3 Account" 
   oMail.Recipients.Add ("[email protected]") 
   oMail.Recipients.ResolveAll 
   oMail.SendUsingAccount = oAccount 
   oMail.Send 
  End If 
 Next 
End Sub 

Свойство SentOnBehalfOfName имеет смысл только в случае учетной записи Exchange. Более того, у вас должны быть разрешения на отправку писем от имени других учетных записей.

person Eugene Astafiev    schedule 25.10.2015

Невозможно этого сделать - Exchange всегда использует основной SMTP-адрес при отправке исходящих сообщений. Единственный способ отправить как один из прокси-адресов - это сделать это через SMTP. Вы можете создать фиктивную учетную запись POP3 / SMTP (убедитесь, что POP3 не загружает сообщения) или использовать Proxy Manager - он устанавливается непосредственно в Outlook и прозрачно использует SMTP под капотом.

См. http://www.msoutlook.info/question/send-mail-from-additional-exchange-address-or-alias, чтобы получить список вариантов.

person Dmitry Streblechenko    schedule 25.10.2015
comment
Я могу изменить его вручную, и он отлично работает. Это определенно выполнимо. Это вопрос автоматизации ... Я должен сказать, что я использую Outlook 2016, так что эта функция могла быть добавлена ​​недавно? - person ExPerseides; 25.10.2015
comment
Если он работает вручную, это не псевдоним. Если это отдельная учетная запись, используйте свойство MailItem.SendUsingAccount. - person Dmitry Streblechenko; 26.10.2015