Liste de diffusion outlook

Soyez le premier à donner votre avis sur cette source.

Snippet vu 19 012 fois - Téléchargée 28 fois

Contenu du snippet

Cette procédure permet d'envoyer un mail à une liste de diffusion outlook.
Je n'ai pas trouvé de source équivalente sur vbfrance donc je la rajoute.

Source / Exemple :


Public Sub mail(GROUPE As String, Optional JOINTE As String = "", Optional SUJET As String = "", Optional BODY As String = "", Optional dest As String = "")
'   FONCTION PERMETTANT D'ENVOYER UN MAIL AVEC UNE PIECE JOINTE
Dim MonOutlook As New Outlook.Application
Dim MonMessage As Outlook.MailItem
'Set MonOutlook = CreateObject("Outlook.Application")
'   CREATION D'UN NOUVEAU MESSAGE
Set MonMessage = MonOutlook.CreateItem(0)
'   DESTINATAIRE
Dim TO_Dest As String
Dim i As Integer
For i = 1 To MonOutlook.Session.AddressLists.Item("Contacts").AddressEntries.Item(GROUPE).Members.Count
    If TO_Dest <> "" Then TO_Dest = TO_Dest & "; "
    TO_Dest = TO_Dest & MonOutlook.Session.AddressLists.Item("Contacts").AddressEntries.Item(GROUPE).Members.Item(i)
Next
'   DESTINATAIRE ( ENSEMBLE DE MAIL )
MonMessage.To = TO_Dest
MonMessage.CC = ""
'   OBJET DU MESSAGE
MonMessage.Subject = SUJET
'   LE MESSAGE
MonMessage.BODY = BODY
'   AJOUT DE LA PIECE JOINTE ( CHEMIN COMPLET DEMANDEE )
If JOINTE <> "" Then
    If Dir(JOINTE, vbNormal Or vbReadOnly Or vbHidden Or vbSystem Or vbArchive) = "" Then
        MsgBox "fichier introuvable !", vbCritical, "Attention"
        Set MonOutlook = Nothing
        Set MonMessage = Nothing
        Exit Sub
    End If
    MonMessage.Attachments.Add JOINTE
End If
'   ENVOI DE L'EMAIL
MonMessage.Send
MonOutlook.Quit
Set MonOutlook = Nothing
Set MonMessage = Nothing
End Sub

Conclusion :


Cette procédure va ouvrir l'outlook du PC et va aller chercher la liste de diffusion dans cet outlook pour récupérer les adresses de la liste.
Ce code ne marche que pour une version francaise.
La constante des contacts est la suivant : "oleContact" ( merci Baddante ).

A voir également

Ajouter un commentaire

Commentaires

damdam04
Messages postés
27
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
20 novembre 2006
-
bonjour,

je viens de tester le code, mais Outlook me bloque sur le MonMessage.Send il me demande de confirmer l'envoi...
es ce que quelqu'un connait un moyen pour ne plus avoir à attendre 5 s avant de pouvoir cliquer sur "oui" pour envoyer le message. je suis conscient que c'est un peu délicat parce que l'on touche à la sécurité d'Outlook... mais c'est pour le boulot, alors s'il vous plait un petit coup de pouce ne serait pas de refus...

bonne soirée

damdam04
rambc
Messages postés
224
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
29 mars 2009
-
Mea Culpa concernant GROUPE.

Ceci étant dit, il aurait été plus simple d'expliquer rapidement comment se crée un GROUPE de contact dans le carnet d'adresse sous OUTLOOK car un utilisteur lambda comme moi ne connait pas cette fonctionnalité (car il n'en a pas le besoin).

Amicalement.
rambc
Messages postés
224
Date d'inscription
mercredi 21 avril 2004
Statut
Membre
Dernière intervention
29 mars 2009
-
Vous allez dire que j'insiste mais que doit-on mettre dans GROUPE ?

Par avance merci.
christ_28
Messages postés
33
Date d'inscription
mardi 31 janvier 2006
Statut
Membre
Dernière intervention
10 novembre 2014
1 -
C'est pas trop mal, mais ça ne fonctionne pas sous office 2000.
Moi-même je n'avais pas réussi à le faire puisque une liste de dest. dans l'adresse ne fonctionne pas.
J'ai fait d'une autre façon que je mettrai à dispos bientôt.
Je me suis permis de faire quelques modifications et anotations pour faire une procédure plus complète sans développer plus loin.
Je vous la soumets ci-dessous :

Public Sub Envoi_Mail(GROUPE As String, _
Optional Pièce_Jointe As String = "", _
Optional Sujet As String = "", _
Optional Corps As String = "", _
Optional Dest As String = "")
' FONCTION PERMETTANT D'ENVOYER UN MAIL AVEC UNE PIECE JOINTE
' Version Office 2000 !
' Explication finale :
' Cette procédure va ouvrir l'outlook du PC et va aller chercher la liste de diffusion dans cet outlook
' pour récupérer les adresses de la liste.
' Ce code ne marche que pour une version francaise.
' La constante des contacts est la suivant : "oleContact" ( merci Baddante ).

Dim MonOutlook As Object
Dim MonMessage As Object
Set MonOutlook = CreateObject("Outlook.Application")
' CREATION D'UN NOUVEAU MESSAGE
Set MonMessage = MonOutlook.CreateItem(0)
' DESTINATAIRE
Dim TO_Dest As String
Dim i As Integer
For i = 1 To MonOutlook.Session.AddressLists.Item("Contacts").AddressEntries.Item(GROUPE).Members.Count
If TO_Dest <> "" Then TO_Dest = TO_Dest & "; "
TO_Dest = TO_Dest & MonOutlook.Session.AddressLists.Item("Contacts").AddressEntries.Item(GROUPE).Members.Item(i)
Next
' DESTINATAIRE ( ENSEMBLE DE MAIL )
MonMessage.To = TO_Dest
' ici on peut rajouter un paramètre pour un destinataire en copie
' et éventuellement refaire la boucle ci-dessus pour une liste (note Christ_28)
MonMessage.CC = ""
' OBJET DU MESSAGE
MonMessage.Subject = Sujet
' LE MESSAGE
MonMessage.BODY = Corps
' AJOUT DE LA PIECE JOINTE (donner le chemin complet "x:\Rep\sous-rep\fichier.extension")
' on peut éventuellement rajouter un test de présence physique du fichier avant (note Christ_28)
If Pièce_Jointe <> "" Then MonMessage.Attachments.Add Pièce_Jointe
' ENVOI DE L'EMAIL
' MonMessage.Display (n'est pas nécessaire est doit être mis avant "send", sinon plantage (note Christ_28)
MonMessage.Send
MonOutlook.Quit
Set MonOutlook = Nothing
Set MonMessage = Nothing

End Sub
cs_sangho
Messages postés
57
Date d'inscription
dimanche 29 décembre 2002
Statut
Membre
Dernière intervention
27 mai 2008
-
Primo : un liste de diffusion contient plusieurs destinataires
Si on met le nom de la liste de diffucion à la place d'une adresse mail, sa ne marche pas.
Donc il faut parcourir l'ensemble de la liste de diffusion pour récupérer l'ensemble des adresses.

Secondo : j'ai trouver cette source pour un projet et je l'ai rajouter pour aider mais je n'ai pas modifier ma fontion

Explication :
Jointe : il faut un chemin d'accès biensur
to : les destinataires
( On peut le faire d'autre facon )
j'ai fait avec une chaine de caractères
sachant que les destinataires sont séparés par un ";"

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.