(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
- Modifié Sauveur Consalvi dimanche 1 juillet 2012 16:03 Solution trouvée
Toutes les réponses
-
mardi 26 juin 2012 10:37Modé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
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
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
- Proposé comme réponse Patrice ScribeMVP, Moderator mercredi 27 juin 2012 07:45
- Marqué comme réponse Sauveur Consalvi mercredi 27 juin 2012 07:56
-
mercredi 27 juin 2012 07:46Modérateur
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".
- Marqué comme réponse Sauveur Consalvi mercredi 27 juin 2012 07:57
-
dimanche 1 juillet 2012 16:08
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 SubCordialement 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

