Outlook VBA забирает почту из .CC - PullRequest
1 голос
/ 29 мая 2019

Мой код VBA возьмет адрес электронной почты из объекта .TO и автоматически отправит другое письмо. Проблема в том, что адрес «шепотом» и имеет форму вместо john.smith@email.dot, а не John Smith. Объект .TO тогда пуст для кода VBA. Можно ли это обойти?

Dim objMail As Outlook.MailItem
Dim objNewMail1 As Outlook.MailItem    
Dim strTo As String

strTo = objMail.To

Set objNewMail1 = Application.CreateItem(olMailItem)

    With objNewMail1
        .To = strTo
        .Send
    End With

1 Ответ

2 голосов
/ 29 мая 2019

Не используйте свойства To / CC / BCC - они обычно включают в себя только отображаемые имена, а не адреса электронной почты.

Переберите всех получателей в коллекции MailItem.Recipients и используйте свойство Recipient.Address - имейте в виду, что у вас может быть адрес типа EX, в отличие от SMTP, в случае Exchange вам может потребоваться использовать Recipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress (GetExchangeUser вернет ноль для записей, не относящихся к Exchange).

Тип получателя (olTo / olCC / olBCC) хранится в свойстве Recipient.Type.

   dim recip, newRecip
   ...
   With objNewMail1
        for each recip in objMail.Recipients
          set newRecip = .Recipients.Add(recip.Address)
          newRecip.Type = recip.Type 
        next
        .Send
    End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...