Мой код возьмет адрес электронной почты из свойства .To
и отправит другое электронное письмо.
Когда адрес заполняется автоматически, вместо [email protected] используется 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
"Шепот" - это функция, когда вы используете почтовый адрес один раз или у вас уже есть адрес в списке контактов. Таким образом, вы не печатаете электронную почту, а несколько писем, а Outlook выбирает остальное.
Не используйте свойства To
/ CC
/ BCC
— они, как правило, содержат только отображаемые имена, а не адреса электронной почты.
Прокрутите всех получателей в коллекции MailItem.Recipients
и используйте свойство Recipient.Address
— имейте в виду, что у вас может быть адрес типа EX, а не SMTP в случае Exchange, вам, возможно, придется использовать Recipient.AddressEntry.GetExchangeUser().PrimarySmtpAddress
(GetExchangeUser
вернет null для адресных записей, отличных от 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
спасибо за ответ, не могли бы вы добавить свой тип кода к моему? я потерялся.
С чем именно у вас проблемы? Перебирать получателей? Доступ к свойствам адреса и типа? Или что-то другое?
проблема в том, как все поместить в мой код, как объявить MailItem.Recipients с Recipients.Adress и как использовать olTo.
объявить Dim recip как Outlook.MailItem?
это не работает, объект .To пуст и сохранен как черновик
Outlook.Получатель. Что не работает? Вы получаете сообщение об ошибке?
Что такое «шепот» и о какой форме вы говорите? Может ли скриншот объяснить это?