Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1276 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2017451
tuxbleu
renie ses origines
Posté le 17-08-2010 à 16:07:08  profilanswer
 

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
mood
Publicité
Posté le 17-08-2010 à 16:07:08  profilanswer
 

n°2017568
tuxbleu
renie ses origines
Posté le 18-08-2010 à 10:07:14  profilanswer
 

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
n°2211426
imadou_vb
Posté le 23-11-2013 à 00:23:50  profilanswer
 

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
 

n°2211427
imadou_vb
Posté le 23-11-2013 à 00:25:28  profilanswer
 

Petite precision MAILQUALITE est item pour toi !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Afficher une image sous VBMacro: Changer le type du fichier dans Enregistrer sous
Problème d'aperçu partiel de mon formulaire php dans OutlookWORD VB Comment supprimer des liaisons dans l'en-tête?
[Résolu] Problème concaténation et chemin vers autre classeur[VB.net] Reload, refresh form après changement de la langue
Vote / Satisfaction et envoi par emailINTRODUIRE une base de donnée dans Le VB
[VB.NET] Affichage MsChart continuellement mis a jour[Resolu] Problème formulaire envoi mail
Plus de sujets relatifs à : [VB Outlook] Changer de compte de messagerie au moment de l'envoi


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR