[VB Outlook] Changer de compte de messagerie au moment de l'envoi

Changer de compte de messagerie au moment de l'envoi [VB Outlook] - VB/VBA/VBS - Programmation

Marsh Posté le 17-08-2010 à 16:07:08    

Bonjour
 
Sur mon Outlook, je possède 2 comptes : Un compte nommé "Mail" qui est de type pop3, et un compte nommé "Messagerie interne" qui est un compte Exchange.
 
Je cherche, en fonction de l'adresse de destination de mon mail, choisir à la place de l'utilisateur quel compte va etre utilisé.
J'ai fais "google est mon ami", j'ai trouvé des brides de codes qui semblent prometteuses, pas d'erreur à l'exécution, je défile pas à pas le code, tout semple se passer correctement (le test pour chosir quel compte de messagerie est correcte) mais le mail est toujours envoyé avec le compte de messagerie pas défaut.
Si quelqu'un a une idée, ca m'aiderait beaucoup et éviterait des tonnes de problèmes  :sweat:  (mails qui arrivent pas, etc...)  
 

Code :
  1. Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
  2. Dim desti
  3. For Each desti In Item.Recipients
  4. If desti.Address Like "*@*" Then //Bon là je met pas tous le test, c'est plus poussé que ca mais ca n'a pas d'interet ici
  5.         Externe = True
  6.     Else
  7.         interne = True
  8. End If
  9. Exit For
  10. Next desti
  11. If externe = True Then  //bon jusque là, RAS, selon le formatage de l'adresse de destination, on passe le bon paramètre.  
  12. go = Set_Account("Mail", Item)
  13. Else
  14. go = Set_Account("Messagerie Interne", Item)
  15. End If
  16. End Sub


 
 

Code :
  1. Function Set_Account(ByVal AccountName As String, M As Outlook.MailItem) As String
  2. Dim OLI As Outlook.Inspector
  3. Dim strAccountBtnName As String
  4. Dim intLoc As Integer
  5. Const ID_ACCOUNTS = 31224
  6. Dim CBs As Office.CommandBars
  7. Dim CBP As Office.CommandBarPopup
  8. Dim MC As Office.CommandBarControl
  9. Set OLI = M.GetInspector
  10. If Not OLI Is Nothing Then
  11. Set CBs = OLI.CommandBars
  12. Set CBP = CBs.FindControl(, ID_ACCOUNTS)
  13. CBP.Reset
  14. If Not CBP Is Nothing Then
  15. For Each MC In CBP.Controls  //Là ca parcours tous les comptes de messagerie existant, donc Mail et Messagerie interne, et je le vois faire au pas à pas
  16. intLoc = InStr(MC.Caption, " " )
  17. If intLoc > 0 Then
  18. strAccountBtnName = Mid(MC.Caption, intLoc + 1)
  19. Else
  20. strAccountBtnName = MC.Caption
  21. End If
  22. If strAccountBtnName = AccountName Then  //Quand le compte recherché est trouvé, on envoi le mail. On rentre bien ici au bon moment.
  23. MC.Execute
  24. Set_Account = AccountName
  25. GoTo Exit_Function
  26. End If
  27. Next
  28. End If
  29. End If
  30. Set_Account = ""
  31. Exit_Function: Set MC = Nothing
  32. Set CBP = Nothing
  33. Set CBs = Nothing
  34. Set OLI = Nothing
  35. End Function


 
j'ai juste l'impression que ca sert à rien, je dis d'envoyer le mail, mais ai-je bien forcé l'utilisation du bon compte ?  
Concrètement, tout ce code ne change rien, si je en le mettais pas tout se passerait de la même façon, le compte ne change jamais.
 
Une idée?


---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 17-08-2010 à 16:07:08   

Reply

Marsh Posté le 18-08-2010 à 10:07:14    

Rectification / Précision.
En suivant l'exécution pas à pas, je me rends compte que le compte change bien, ca passe sur le bon compte de messagerie.
Mais aucune incidence au final, l'envoie se fait par le compte par defaut.
 
Étonnamment, ca a fonctionné une fois, le message est parti par le bon compte, mais je ne comprends pas pourquoi  
Le champs "De" s'est transformé en "tuxbleu [tuxbleu@boite.com]; de la part de; tuxbleu@exchange


---------------
Mon topic de vente - Mon feed-back
Reply

Marsh Posté le 23-11-2013 à 00:23:50    

Bonjour,
 
J'ai tourné et tourné sur ce sujet et j'ai trouvé l'astuce
Tout en conservant les bases de ton code, l'astuce est de stopper l'envoi, copier ton email et de supprimer l'original
 
dans ton code item_send
 
met ce code juste apres le end if de tes fonctions set_account
 
If externe = True Then  //bon jusque là, RAS, selon le formatage de l'adresse de destination, on passe le bon paramètre.  
go = Set_Account("Mail", Item)
Else
go = Set_Account("Messagerie Interne", Item)
End If
End Sub  
 
'suite pb modification du mail on contourne le pb ! On crée une copie et je delete l'original
Cancel = True
MAILQUALITE.Copy.Send
MAILQUALITE.Delete
 

Reply

Marsh Posté le 23-11-2013 à 00:25:28    

Petite precision MAILQUALITE est item pour toi !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed