Адрес получателя Outlook в поле

Я создаю настраиваемый ответ: изменился внешний вид отправки с учетной записи, и некоторое поле автоматически заполнится.

Сначала я объясню, как это работает, мы получаем электронное письмо. Адрес электронной почты, который получает это электронное письмо, находится в CC. Я создал кнопку в верхнем баре. Когда я нажимаю эту кнопку, открывается новый экран электронной почты с уже заполненной информацией и оставшейся информацией, которую нам нужно будет заполнить.

Для меня у меня все настроено. Но я не могу работать. Я хочу, чтобы новое электронное письмо отправлялось в исходный адрес (получателя).

На данный момент у меня есть этот код:

Sub ReplyUsingAccount()
Dim oAccount As Outlook.Account
Dim objItem As Outlook.MailItem
Dim oMail As Outlook.MailItem
Dim strAcc As String
Dim i As Long
Set objItem = ActiveExplorer.Selection.Item(1)
strAcc = "[email protected]"
For Each oAccount In Application.Session.Accounts
    If oAccount.DisplayName = strAcc Then
        Set oMail = Application.CreateItem(olMailItem)
        With oMail
            .SendUsingAccount = oAccount
            .To = objItem.RecipientEmailAddress
            .Subject = "Aangaande uw bestelling bij "
                       .HTMLBody = "<br><br><br>" & _
                        "<hr width=""50%"" size=""2"" noshade />" & _
                        "<font color=""#6699ff"">" & _
                        objItem.HTMLBody & "</font>"
            .Display
        End With
    End If
Next oAccount
Set oAccount = Nothing
Set objItem = Nothing
Set oMail = Nothing
End Sub

.To = objItem.RecipientEmailAddress не будет работать. У кого-то есть решение для этого.

Заранее спасибо.

+2
источник поделиться
3 ответа

Я предполагаю, что он не возвращает адрес электронной почты SMTP поскольку вы используете возврат свойства .SenderEmailAddress на внутренний адрес электронной почты (что означает, что это будет адрес типа EX, а не SMTP).

Ниже приведен адрес SMTP для внутренних и внешних.

Dim oOutlook As Outlook.Application
Dim senderAddress As String, recipEntryId As String, SmtpMailAddress As String
Dim oAddressEntry As Outlook.AddressEntry, oExchangeUser As Outlook.ExchangeUser
Dim oReply As Outlook.MailItem, oRecipient As Outlook.Recipient
Dim objItem As Outlook.MailItem

If objItem.SenderEmailType = "SMTP" Then

    senderAddress = objItem.SenderEmailAddress

Else

    Set oReply = objItem.Reply()
    Set oRecipient = oReply.Recipients.Item(1)

    recipEntryId = oRecipient.EntryID

    oReply.Close OlInspectorClose.olDiscard

    recipEntryId = oRecipient.EntryID

    Set oAddressEntry = oOutlook.GetAddressEntryFromID(recipEntryId)
    Set oExchangeUser = oAddressEntry.GetExchangeUser()

    senderAddress = oExchangeUser.PrimarySmtpAddress()

End If

SmtpMailAddress = senderAddress

Затем вы можете использовать getSmtpMailAddress переменную в качестве .To адрес электронной почты.

Если вы используете Outlook 2010 или более .PropertyAccessor, существует способ использования свойства .PropertyAccessor. Я никогда не использовал это, но его можно было бы рассмотреть.

0
источник

Я не думаю, что RecipientEmailAddress действителен в VBA.

Попробуйте SenderEmailAddress.

0
источник

Чтобы переместить весь адрес получателя в. .To поля пример будет.

Option Explicit
Sub Example()
    Dim olItem As Outlook.MailItem
    Dim olReply As MailItem ' Reply
    Dim Recipient As Outlook.Recipient
    Dim olRecip As String

    If Application.ActiveExplorer.Selection.Count = 0 Then
        MsgBox "No Item was Selected "
        Exit Sub
    End If

    For Each olItem In Application.ActiveExplorer.Selection
        Set olReply = olItem.Reply

        For Each Recipient In olItem.Recipients
            olRecip = Recipient.address & ";" & olRecip
        Next Recipient

        With olReply
            .To = olRecip ' all the Recipient
            .Subject = "Aangaande uw bestelling bij "
                       .HTMLBody = "<br><br><br>" & _
                        "<hr width=""50%"" size=""2"" noshade />" & _
                        "<font color=""#6699ff"">" & _
                        olReply.HTMLBody & "</font>"
            .Display
        End With

    Next

End Sub

Чтобы добавить адрес отправителя .To = olRecip & ";" & olItem.SenderEmailAddress .To = olRecip & ";" & olItem.SenderEmailAddress

0
источник

Посмотрите другие вопросы по меткам или Задайте вопрос