2017-01-11 1 views
1

Description du problème:perspectives vba - événement réponse - domaine du changement « FROM » - boîte aux lettres partagée

Je dois écrire une macro qui va changer l'expéditeur d'un message (champ « de » éditeur). J'ai ajouté deux compte de boîte aux lettres partagé et pendant que je clique sur répondre sur l'élément (qui appartient à l'un d'entre eux), je veux envoyer ce message de réponse de l'autre boîte aux lettres partagée.

Ma solution (ne fonctionne pas):

Je l'ai utilisé événement _Reply pour le faire. Je modifie la propriété .SentOnBehalfOfName et j'affecte dans cette propriété l'adresse électronique à la seconde boîte aux lettres partagée. Il fonctionne presque, parce que le champ «de» dans l'éditeur de message change lui-même en adresse correcte, mais après avoir envoyé un message la personne qui l'a reçu, peut voir que je l'ai envoyé de la première adresse email (qui est fausse) dossier "éléments envoyés" le message apparaît comme envoyé au nom de "deuxième adresse e-mail". (J'espère que cette description est assez claire).

Mon code (situé dans ThisOutlookSession):

Option Explicit 
Private WithEvents oExpl As Explorer 
Private WithEvents oItem As MailItem 
Private bDiscardEvents As Boolean 
Public WithEvents myOlApp As Outlook.Application 


Public strSender1 As String 'name of shered mailbox which is owner of the mail 
Public strSender2 As String 'address of shered mailbox 



Private Sub Application_Startup() 
    Set oExpl = Application.ActiveExplorer 
    bDiscardEvents = False 
End Sub 

Private Sub oExpl_SelectionChange() 
    On Error Resume Next 
    Set oItem = oExpl.Selection.Item(1) 
End Sub 

Private Sub oItem_Reply(ByVal Response As Object, Cancel As Boolean) 
    strSender1 = "Name of mailbox1" 
    strSender2 = "[email protected]" 
    If Response.Class = olMail Then 
     If Response.Sender Is Nothing Then 
      'MsgBox "There's no sender for the current email", vbInformation 
      Exit Sub 
     End If 
     If Response.Sender = strSender1 Then 
      MsgBox "Field 'From' has been changed to " + strSender2 
      Response.SentOnBehalfOfName = strSender2 
     End If 
    End If 
    MsgBox Response.SentOnBehalfOfName 
    'Set oItem = Nothing 

End Sub 

que quelqu'un peut me aider avec le problème?

Répondre

0

Pour vos besoins, je pense que vous avez besoin SendUsingAccount

Private Sub oItem_Reply(ByVal Response As Object, Cancel As Boolean) 

    strSender1 = "Name of mailbox1" 

    If Response.Class = olMail Then 

     If oItem.AutoForwarded = True Then 

      If oItem.Sender = strSender1 Then 

       ' oItem was autoforwarded from 
       ' strSender1 - name of shared mailbox which is owner of the mail 
       Response.SendUsingAccount = Session.Accounts.Item(1) 
       MsgBox "Field 'From' has been changed to " + strSender1 

      End If 
     End If 
    End If 

End Sub 

Pour déterminer le numéro de compte:

Private Sub AccountNames() 

    Dim i As Long 

    For i = 1 To Session.Accounts.Count 
     Debug.Print " Account " & i & " DisplayName....: " & _ 
      Session.Accounts.Item(i).DisplayName 
     Debug.Print 
    Next i 

End Sub 
+0

J'ai résolu le problème en autre façon, mais je vais regarder de plus près à votre solution quand je vais avoir du temps libre. Je pense que j'ai essayé quelque chose comme ça sans succès ... –