Envoyer un mail à un groupe d'utilisateur active directory

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 225 fois - Téléchargée 33 fois

Contenu du snippet

Ce code permet d'envoyer un mail à un groupe dans la hiérarchie Active Directory

Source / Exemple :


Private function ObtenirMail(byval login as string, byval motdepasse as string, byval groupe as string) as string
 try
   Dim LDAP_Chemin As String = "LDAP://ou=<mon OU>,dc=<mon DC>,dc=<mon DC>"
   ' Exemple  Dim LDAP_Chemin As String = "LDAP://ou=senyniumcorp,dc=senyniumcorp,dc=lan"

   ' On renseigne les informations de recherche
   Dim chemin As New DirectoryServices.DirectoryEntry
   chemin.AuthenticationType = DirectoryServices.AuthenticationTypes.Secure
   chemin.Username = login
   chemin.Password = motdepasse
   chemin.Path = LDAP_Chemin

   'Récuprération des informations Active Directory
   Dim rech As New System.DirectoryServices.DirectorySearcher(chemin)
   Dim result As System.DirectoryServices.SearchResult
   Dim mail As String = ""

   'Lister les utilisateurs
   rech.Filter = ("(objectClass=user)")
   For Each result In rech.FindAll()
     'S'assurer de l'existence du mail pour eviter
     'les comptes systemes  
      If (result.GetDirectoryEntry().Properties("mail").Value <> "") Then
         For i = 0 To result.GetDirectoryEntry().Properties("memberof").Count - 1
            tab1 = Split(result.GetDirectoryEntry().Properties("memberof").Item(i), ",")
            tab2 = Split(tab1(0), "=")
     'Vérification de l'appartenance au groupe  
            If (tab2(1) = groupe) Then
 	       mail = mail & result.GetDirectoryEntry().Properties("mail").Value
               if (i < (result.GetDirectoryEntry().Properties("memberof").Count - 1) then
                  mail = mail & ";"
               end if  
            end if
         next
      end if 
   next
   ObtenirMail = mail
  Catch ex As Exception
  End Try
end function

Private Sub EnvoiMail(byval login as string, byval motdepasse as string, byval groupe as string, ByVal De as string, ByVal sujet as string, ByVal Message as string)
   Dim m As New MailMessage
   Dim SMTP_SERV = "server"
   Try
       m.From = De
       m.Subject = sujet
       SmtpMail.SmtpServer = SMTP_SERV
     ' Au format mail  m.BodyFormat = MailFormat.Html

       Dim Adresses as string = ""
       Adresses = ObtenirMail(login, motdepasse, groupe)
       if (trim(Adresse) <> "") then
          m.Body = Message
          m.To = Adresses
          SmtpMail.Send(m)
       end if 
    Catch ex As Exception
    End Try
End Sub

'Exemple d'utilisation

EnvoiMail("monlogin", "Monmotdepasse", "GPE_Administrateurs", "MonMail", "Salut", "Juste un bonjour")

Conclusion :


Il faudra penser à inclure une référence à System.DirectoryServices, et aussi ajouter en debut de fichier " Imports System.Web.Mail ". Je n'ai pas pensé à inclure la directive imports pour le DirectoryServices, mais avec la référence, ça marche.

J'espere que ça sera utile , bonne prog

A voir également

Ajouter un commentaire Commentaires
Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009

AFLTA, as-tu fais un CommitChanges sur le DirectoryEntry qui r?cup?re le r?sultat de ta recherche ?
Messages postés
16
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
1 avril 2008

Bonjour,

Serait-il possible que quelqu'en me transpose ce code en vba pour Excel, car je n'y comprend pas grand chose.

Merci
Messages postés
1
Date d'inscription
jeudi 24 février 2005
Statut
Membre
Dernière intervention
24 mai 2006

Je travaille en ASPX.
Cette méthode pour forcer l'authentification AD par login + mot de passe est bonne. Mon problème est que lorsqu'on change de mot de passe dans AD, et que l'on se reconnecte, il accepte le nouveau comme l'ancien mot de passe (au moins pour la journée car le lendemain il est refusé). Avez-vous une explication et comment imposer uniquement le nouveau mot de passe ?

Merci
Messages postés
49
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
12 juin 2008

Salut, je pourrais peut être, t'aider si tu me dis l'erreur que tu reçois ... Parce que là, comme ça, c'est le flou total.
Messages postés
4
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
20 janvier 2006

J'ai réutilisé une partie de ce code pour générer un menu personnalisé sur mon serveur WEB. Lorsque je fais mon dévellopement en localhost (poste xp) aucun problème. Par contre dés que je passe sur mon serveur WEB (serveur W2k) j'ai une erreure au niveau de : For i = 0 To result.GetDirectoryEntry().Properties("memberof").Count - 1.
pourquoi
Merci

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.