(Visual Studio 2008) Plusieurs destinataires dans System.Net.Mail.MailAddress SOLUTION TROUVEE Voir en fin

Traitée (Visual Studio 2008) Plusieurs destinataires dans System.Net.Mail.MailAddress SOLUTION TROUVEE Voir en fin

  • mardi 26 juin 2012 09:40
     
     

    Bonjour,

    Il semble que non, mais à tout hasard je pose la question :

    En VB, est-il possible de mettre plusieurs destinataires dans System.Net.Mail.MailAddress ?

    Si oui, quel est la syntaxe ?

    Dans mon programme, j'ai beau mettre une liste de dentinaires, seul le premier est pris en compte …


    Cordialement Sauveur CONSALVI


Toutes les réponses

  • mardi 26 juin 2012 10:37
    Modérateur
     
     

    Bonjour,

    Oui d'après la doc : http://msdn.microsoft.com/fr-fr/library/system.net.mail.mailaddress.aspx 

    Sous quelle forme se trouve la liste ? Cela provoque un message d'erreur ? Si oui, le message devrait également aider...

    Sinon c'est une liste on peut donc aussi les ajouter individuellement...


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

  • mardi 26 juin 2012 17:12
     
      A du code

    Bonsoir,

    Merci d'avoir répondu

    Effectivement, c'est au vu de cette page que j'ai eu un doute

    Aucun exemple de code n'est actuellement disponible ou ce langage n'est pas pris en charge.

    Bien sûr que je peux faire une boucle sur ma liste de destinataires, et faire des envois individuels !

    Mais ce n'est pas ce que je recherche …

    Voici le code d'envoi

      Private Sub EnvoyerMail()
            Me.Cursor = Cursors.WaitCursor
            Me.labDestinataire.Text = wDestinataire
            Me.Refresh()
            Dim objMessage As System.Net.Mail.MailMessage
            Dim objAdrExp As System.Net.Mail.MailAddress
            Dim objAdrRec As System.Net.Mail.MailAddress
            Dim objSMTPClient As System.Net.Mail.SmtpClient
            Try
                objMessage = New System.Net.Mail.MailMessage()
                objAdrExp = New System.Net.Mail.MailAddress(wExpMail, wExpNom)  '   mail et nom de Expéditeur
                '   objAdrRec = New System.Net.Mail.MailAddress(wDestinataire)    '   Groupe de 10 adresse et nom du Destinataire
                objAdrRec = New System.Net.Mail.MailAddress("tata@yahoo.fr, toto@yahoo.fr")    '   Groupe de 10 adresse et nom du Destinataire
                objMessage.From = objAdrExp
                objMessage.To.Add(objAdrRec)
                objMessage.Subject = wMesSubject    '   Le sujet
                objMessage.IsBodyHtml = True
                objMessage.Body = wMesBody          '   Le message
                If wFichierJoint <> "" Then
                    Dim fichier_joint As Attachment = New Attachment(wFichierJoint, MediaTypeNames.Application.Octet)
                    objMessage.Attachments.Add(fichier_joint)
                End If
                'objSMTPClient = New System.Net.Mail.SmtpClient(wSMTP)   '   SMTP de la messagerie
                objSMTPClient = New System.Net.Mail.SmtpClient(wSMTP, 587)    '   SMTP de la messagerie avec le n° du port (smtp.gmail.com) 587
                objSMTPClient.Credentials = New NetworkCredential(wExpIdent, wExpMotPass)   '   Identifiant et mot de passe pour la messagerie 
                objSMTPClient.EnableSsl = True
                objSMTPClient.Send(objMessage)
                wNbrEnvoye += 1
                wNbrReste = (wNbrTotal - (wNbrEnvoye * 10)) : If wNbrReste < 0 Then wNbrReste = 0
                Me.labEnvoye.Text = wNbrEnvoye : Me.labRestant.Text = wNbrReste
                Me.Refresh()
            Catch ex As System.IO.IOException
                Me.Cursor = Cursors.Default
                MsgBox(ex.InnerException)
                MessageBox.Show("EnvoyerMail" & vbCrLf & ex.Message & vbCrLf & "N° erreur : " & Err.Number & vbCrLf & vbCrLf & ex.InnerException.Message)
                wOK = False
                MessageBox.Show(ReadException(ex))
            Catch ex As Exception
                Me.Cursor = Cursors.Default
                MessageBox.Show("EnvoyerMail" & vbCrLf & ex.Message & vbCrLf & "N° erreur : " & Err.Number)
                wOK = False
                MessageBox.Show(ReadException(ex))
            End Try
            Application.DoEvents()  ' ????
            Me.Cursor = Cursors.Default
        End Sub

    J'ai mis en "dur" deux destinataires

    Il n'y a aucun message d'erreur, du moins à l'exécution

    Si les deux adresses sont correctes, le message est envoyé seulement à la première

    Si les deux adresses sont fausses, je n'ai un "MailerDemon" que pour la première

    Manifestement, seule la première adresse est traitée

    Le résultat est identique que j'écrive ("toto@yahoo.fe, tata@yahoo.fr") ou ("<toto@yahoo.fr>, <tata@yahoo.fr>")

    Une idée ?


    Cordialement Sauveur CONSALVI

  • mercredi 27 juin 2012 06:42
     
     Traitée

    Bonjour,

    Je crois que malheureusement les adresses multiples ne sont prises en compte qu'à partir du NET Framework 4 et plus !

    Voir http://msdn.microsoft.com/fr-fr/library/system.net.mail.mailaddress(v=vs.90).aspx#Y190


    Cordialement Sauveur CONSALVI

  • mercredi 27 juin 2012 07:46
    Modérateur
     
     Traitée
    Oui, j'ai remarqué après coup que vous indiquez bien VS 2008 (dont .NET 3.5 au mieux) et la doc dans ce cas n'est pas la même et toute la section sur le format des adresses est manquante.

    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

  • dimanche 1 juillet 2012 16:08
     
      A du code

    Bonjour,

    J'ai trouvé une solution pour avoir plusieurs destinataires

    Je n'utilise plus System.Net.Mail.MailAddress, mais objMessage.To.Add

    Voici le code

    Private Sub EnvoyerMail()
            Me.Cursor = Cursors.WaitCursor
            Me.Refresh()
            Dim objMessage As New System.Net.Mail.MailMessage
            Dim objAdrExp As System.Net.Mail.MailAddress
            Dim objSMTPClient As New System.Net.Mail.SmtpClient
            Try
                objAdrExp = New System.Net.Mail.MailAddress(wExpMail, wExpNom)  '   mail et nom de Expéditeur
                objMessage.From = objAdrExp
                objMessage.To.Add("Dest1 <dest1@yahoo.fr> ,Dest2 <dest2@free.fr>")
                objMessage.Subject = wMesSubject    '   Le sujet
                objMessage.IsBodyHtml = True
                objMessage.Body = wMesBody          '   Le message
                If wFichierJoint <> "" Then
                    Dim fichier_joint As Attachment = New Attachment(wFichierJoint, MediaTypeNames.Application.Octet)
                    objMessage.Attachments.Add(fichier_joint)
                End If
                'objSMTPClient = New System.Net.Mail.SmtpClient(wSMTP)   '   SMTP de la messagerie
                objSMTPClient = New System.Net.Mail.SmtpClient(wSMTP, 587)    '   SMTP de la messagerie avec le n° du port (smtp.gmail.com) 587
                objSMTPClient.Credentials = New NetworkCredential(wExpIdent, wExpMotPass)   '   Identifiant et mot de passe pour la messagerie 
                objSMTPClient.EnableSsl = True
                objSMTPClient.Send(objMessage)
                wNbrEnvoye += 1 : wNbrReste = wNbrTotal - wNbrEnvoye
                Me.labEnvoye.Text = wNbrEnvoye : Me.labRestant.Text = wNbrReste
                Me.Refresh()
            Catch ex As System.IO.IOException
                Me.Cursor = Cursors.Default
                MsgBox(ex.InnerException)
                MessageBox.Show("EnvoyerMail" & vbCrLf & ex.Message & vbCrLf & "N° erreur : " & Err.Number & vbCrLf & vbCrLf & ex.InnerException.Message)
                wOK = False
                MessageBox.Show(ReadException(ex))
            Catch ex As Exception
                Me.Cursor = Cursors.Default
                MessageBox.Show("EnvoyerMail" & vbCrLf & ex.Message & vbCrLf & "N° erreur : " & Err.Number)
                wOK = False
                MessageBox.Show(ReadException(ex))
            End Try
            Application.DoEvents()  ' ????
            Me.Cursor = Cursors.Default
        End Sub


    Cordialement Sauveur CONSALVI

  • lundi 2 juillet 2012 07:26
     
     

    L'envoi d'emails à plusieurs adresses en même temps est possible avec .NET, même le framework 4 (ce serait un comble!).

    Je l'utilise tous les jours et je n'ai aucuns problèmes. Utilisez le constructeur de MailMEssage qui attends les destinataires et séparez les adresses email par une virgule.


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

  • lundi 2 juillet 2012 16:42
     
     

    Bonjour,

    C'est vrais. Mais le gros problème est qu'il n'y a pas toujours des exemples, et pas toujours de "vrais" formatio


    Cordialement Sauveur CONSALVI