2016-02-17 2 views
2

Я создаю пользовательский ответ, который изменил внешний вид, отправленный с учетной записи, и некоторое поле автоматически заполнено.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 не будет работать. У кого-то есть решение для этого.

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

+0

https://stackoverflow.com/tour – 0m3r

ответ

0

Я полагаю, что это не возвращение 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 Property. Я никогда не использовал это, но его можно было бы рассмотреть.

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

Смежные вопросы