ENVOYER UN MAIL AVEC SMTP DEPUIS GMAIL,HOTMAIL,YAHOO...
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 2013
-
2 juin 2010 à 18:37
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 2020
-
5 juin 2012 à 23:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 5 juin 2012 à 23:23
Salut,
Malheureusement non, car ce n'est pas une question de langage mais de librairie. VB6 ne fonctionne pas avec le Framework et donc ne possède pas nativement les fonctionnalités permettant d'envoyer un email. Pour envoyer un e-mail en VB6 il faut soit utiliser Winsock ou inet et saisir manuellement le code qui permettra le dialogue avec le serveur soit utiliser un activex conçu pour envoyer les e-mails.
cs_blinkme
Messages postés4Date d'inscriptionmardi 5 juin 2012StatutMembreDernière intervention14 juin 2012 5 juin 2012 à 16:44
Bonjour !
Ce code est très bien mais serait-il possible d'avoir une version VB6 de ce code ?
Merci d'avance !
t4gad4
Messages postés58Date d'inscriptiondimanche 19 septembre 2010StatutMembreDernière intervention26 juillet 20131 28 avril 2012 à 01:01
merci pour cet excellent code!!! =)
cs_Appil
Messages postés208Date d'inscriptionmercredi 10 avril 2002StatutMembreDernière intervention11 juin 2014 23 janv. 2011 à 19:36
Et dire que ça fait 4 jour que je n'avance plus à cause d'un fichier de 0 ko :D
cs_Appil
Messages postés208Date d'inscriptionmercredi 10 avril 2002StatutMembreDernière intervention11 juin 2014 23 janv. 2011 à 19:33
Mais comment j'ai pas pensé à faire le test !!!
Effectivement Produits.zip ne passait pas depuis gmail, il croit qu'il contient un exe alors que non :)
J'ai fais un test sans compresser les fichiers et ça a marché !
Merci pour le temps que tu m'as consacré Mayzz ^^
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 23 janv. 2011 à 19:19
Oui en effet c'est le même code, pour ce qui est des zip, tu as essayé en les envoyant en même temps à un destinataire avec ton compte gmail et via un client smtp(outlook ou thunderbird) pour voir si ça fonctionne ?
cs_Appil
Messages postés208Date d'inscriptionmercredi 10 avril 2002StatutMembreDernière intervention11 juin 2014 23 janv. 2011 à 19:03
Pour le moment je n'ai que deux fichiers de quelques ko qui s'envoient sans problème séparément mais qui génèrent l'erreur (la 2ème) si j'utilise ma méthode avec la déclaration "Imports System.Net.Mail" :
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 23 janv. 2011 à 18:56
Non je n'ai pas essayé ^^
En fait, le problème n'est même pas là mais vient du fait que je n'ai pas lu correctement ton dernier message, pour le code proposé en 1er je pensais la méthode add surchargé pour le string, mais ce n'est pas le cas. Ca donne ça :
For each File As String In MaListBoxFichier.Items
.Attachments.Add(New System.Net.Mail.Attachment(Item.Tostring))
Next
Et pour ton code, c'est pas une erreur de VB, c'est simplement un message retourné par le serveur de gmail pour te dire que tu dépasse la taille autorisé pour la pièce jointe ou encore que tu envois des fichiers dont l'extention peut être détecté comme potentiellement dangereuse (exécutable par exempl .exe). Et mis à part changer de serveur il n'y a pas d'autre solution.
cs_Appil
Messages postés208Date d'inscriptionmercredi 10 avril 2002StatutMembreDernière intervention11 juin 2014 23 janv. 2011 à 18:19
Mayzz > As-tu essayé ton code ?
mail.Attachments.add() attend une variable de type 'System.Net.Mail.Attachment' et pas 'String' ;)
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 23 janv. 2011 à 18:14
Effectivement c'est une erreur de syntaxe:
Dim attach1 As String = Application.StartupPath & "" & "Catégories.zip"
Dim attach2 As String = Application.StartupPath & "" & "Produits.zip"
cs_Appil
Messages postés208Date d'inscriptionmercredi 10 avril 2002StatutMembreDernière intervention11 juin 2014 23 janv. 2011 à 15:53
Ok ;)
Pour ta proposition c'est une erreur de syntaxe : "Impossible de convertir une valeur de type 'string' en 'System.Net.Mail.Attachment'"
Quant à moi mon code génère cette exception "Allocation de stockage dépassée. La réponse du serveur était : 5.7.0 Our system detected an illegal attachment on your message. Please"
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 23 janv. 2011 à 15:11
Une idée ?
Ben déjà il faudrait que tu commence par donner précisément le message retourné par l'erreur parce que "Ca marche pas" c'est un peu vague...
cs_Appil
Messages postés208Date d'inscriptionmercredi 10 avril 2002StatutMembreDernière intervention11 juin 2014 23 janv. 2011 à 15:01
Merci pour ta réponse Mayzz !
ça marche pas ;)
J'ai essayé ces deux lignes mais ça génère une erreur ...
Dim attach1 As New Attachment(Application.StartupPath & "" & "Catégories.zip")
'Dim attach2 As New Attachment(Application.StartupPath & "" & "Produits.zip")
Dim client As SmtpClient = New SmtpClient("smtp.gmail.com", 587)
client.EnableSsl = True
client.Credentials = New System.Net.NetworkCredential("Utilisateur", "Mot de passe")
Try
client.Send(mail)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Else
MsgBox("Non compressé ...")
End If
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 23 janv. 2011 à 12:10
Salut, c'est très simple, il suffit de faire une boucle avec la liste de tes fichiers, exemple :
For each File As String In MaListBoxFichier.Items
.Attachments.Add(Item.Tostring)
Next
cs_Appil
Messages postés208Date d'inscriptionmercredi 10 avril 2002StatutMembreDernière intervention11 juin 2014 23 janv. 2011 à 02:43
J'ai essayé d'adapter un bout de code similaire pour attacher plusieurs pièces jointes sans succès ! Quelqu'un a une idée ?
jaljalil2010
Messages postés5Date d'inscriptionmercredi 17 février 2010StatutMembreDernière intervention 6 juin 2010 6 juin 2010 à 11:14
Merci bien
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 5 juin 2010 à 22:28
Mais bien entendu :
Pour commencer comme je l'ai énuméré plus haut, il faut utiliser les sockets pour communiquer avec le serveur de messagerie, rien que pour cela, il faut créer une classe gérant les méthodes asynchrones (cross-threading) pour éviter les "freez" du thread principale.
Pour le reste, une fois la connexion au serveur maitrisé, il suffit de dialoguer avec le serveur en suivant scrupuleusement les instructions de la RFC 1939 - FR portant sur le protocole POP ici => http://abcdrfc.free.fr/rfc-vf/rfc1939.html
Quand j'ai dis qu'il y avait du boulot je ne plaisantais pas !
Bon courage aux chanceux qui voudrons se lancer dans cette aventure !!!
@+ Mayzz
jaljalil2010
Messages postés5Date d'inscriptionmercredi 17 février 2010StatutMembreDernière intervention 6 juin 2010 5 juin 2010 à 21:41
Merci pour la repense "MAYZZ" , pourriez vous nous donner un point de départ?!
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 5 juin 2010 à 20:40
Le .NET Framework ne gère pas nativement le protocole POP/IMAP, il faut donc passer par les sockets et créer une classe pour manager la réception d'email, beaucoup de boulot en perspective !
Sinon tu peux toujours te rabattre sur des composants externes ou payants comme le montre certaines sources ici.
jaljalil2010
Messages postés5Date d'inscriptionmercredi 17 février 2010StatutMembreDernière intervention 6 juin 2010 5 juin 2010 à 19:17
oui j'ai pris un code qui ne marche q'avec gmail et je l'ai amélioré , le code n'ai pas optimisé pour plus de simplicitée ,je vais l'améliorer plus tard si dieu le veux.
je cherche maintenant comment recevoir les messages reçues par mon email???
si quelqu'un à des idées...merci.
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 5 juin 2010 à 18:53
Même pas! Il suffit simplement d'essayer de regarder et de COMPRENDRE, le code sans juste faire un vulgaire copié/collé :
If attach <> "" Then
.Attachments.Add(New Attachment(attach))
End If
Et il s'aperçevera que la propriété "Attachments" de la classe "System.Net.MailMessage" est une collection et donc qu'elle peut comporter plus d'un élément, je dirais juste que le code de cette source n'est pas optimisé sans vouloir être méchant, de plus elle a déjà été posté.
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 5 juin 2010 à 18:37
astouz2000k il te suffit de faire un ZIP MDR ^^
cs_willemijns
Messages postés1Date d'inscriptionsamedi 5 juin 2010StatutMembreDernière intervention 5 juin 2010 5 juin 2010 à 13:53
.Timeout = 1
A quoi correspond cette valeur de timeout ? ce nombre me
parait faible...
astouz2000k
Messages postés50Date d'inscriptionsamedi 2 juillet 2005StatutMembreDernière intervention 2 mai 2013 5 juin 2010 à 00:18
nikel merci..
par contre on peux attacher qu'une seul piece jointe.
Merci
jaljalil2010
Messages postés5Date d'inscriptionmercredi 17 février 2010StatutMembreDernière intervention 6 juin 2010 4 juin 2010 à 21:25
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
EnvoiMail("Ton Adresse Email", "Le password de l'adresse", "Sujet du message", "l'adresse email du déstinataire", "Le message", "l'adresse du fichier que vous voulez envoyer")
End Sub
exp:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
EnvoiMail("Jalal@hotmail.com", "aredshffjk29089", "Teste", "Moha@yahoo.fr", "Salut moha", "c:\fiche.txt")
End Sub
astouz2000k
Messages postés50Date d'inscriptionsamedi 2 juillet 2005StatutMembreDernière intervention 2 mai 2013 4 juin 2010 à 19:52
bonjour,
Ca a l'ai bien mais comment on s'en sert ???
Merci
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 4 juin 2010 à 13:12
merci pour l'info, c'est trés bien du coup comme snippet !
jaljalil2010
Messages postés5Date d'inscriptionmercredi 17 février 2010StatutMembreDernière intervention 6 juin 2010 4 juin 2010 à 12:19
5 juin 2012 à 23:23
Malheureusement non, car ce n'est pas une question de langage mais de librairie. VB6 ne fonctionne pas avec le Framework et donc ne possède pas nativement les fonctionnalités permettant d'envoyer un email. Pour envoyer un e-mail en VB6 il faut soit utiliser Winsock ou inet et saisir manuellement le code qui permettra le dialogue avec le serveur soit utiliser un activex conçu pour envoyer les e-mails.
5 juin 2012 à 16:44
Ce code est très bien mais serait-il possible d'avoir une version VB6 de ce code ?
Merci d'avance !
28 avril 2012 à 01:01
23 janv. 2011 à 19:36
23 janv. 2011 à 19:33
Effectivement Produits.zip ne passait pas depuis gmail, il croit qu'il contient un exe alors que non :)
J'ai fais un test sans compresser les fichiers et ça a marché !
Merci pour le temps que tu m'as consacré Mayzz ^^
23 janv. 2011 à 19:19
23 janv. 2011 à 19:03
mail.Attachments.Add(New Attachment(Application.StartupPath & "" & "Catégories.zip"))
mail.Attachments.Add(New Attachment(Application.StartupPath & "" & "Produits.zip"))
Qui est identique à la tienne avec une boucle ;)
23 janv. 2011 à 18:56
En fait, le problème n'est même pas là mais vient du fait que je n'ai pas lu correctement ton dernier message, pour le code proposé en 1er je pensais la méthode add surchargé pour le string, mais ce n'est pas le cas. Ca donne ça :
For each File As String In MaListBoxFichier.Items
.Attachments.Add(New System.Net.Mail.Attachment(Item.Tostring))
Next
Et pour ton code, c'est pas une erreur de VB, c'est simplement un message retourné par le serveur de gmail pour te dire que tu dépasse la taille autorisé pour la pièce jointe ou encore que tu envois des fichiers dont l'extention peut être détecté comme potentiellement dangereuse (exécutable par exempl .exe). Et mis à part changer de serveur il n'y a pas d'autre solution.
23 janv. 2011 à 18:19
mail.Attachments.add() attend une variable de type 'System.Net.Mail.Attachment' et pas 'String' ;)
23 janv. 2011 à 18:14
Dim attach1 As String = Application.StartupPath & "" & "Catégories.zip"
Dim attach2 As String = Application.StartupPath & "" & "Produits.zip"
mail.Attachments.Add(attach1)
mail.Attachments.Add(attach2)
23 janv. 2011 à 15:53
Pour ta proposition c'est une erreur de syntaxe : "Impossible de convertir une valeur de type 'string' en 'System.Net.Mail.Attachment'"
Quant à moi mon code génère cette exception "Allocation de stockage dépassée. La réponse du serveur était : 5.7.0 Our system detected an illegal attachment on your message. Please"
23 janv. 2011 à 15:11
Ben déjà il faudrait que tu commence par donner précisément le message retourné par l'erreur parce que "Ca marche pas" c'est un peu vague...
23 janv. 2011 à 15:01
ça marche pas ;)
J'ai essayé ces deux lignes mais ça génère une erreur ...
mail.Attachments.Add(New Attachment(Application.StartupPath & "" & "Catégories.zip"))
mail.Attachments.Add(New Attachment(Application.StartupPath & "" & "Produits.zip"))
Une idée ?
Voilà mon bout de code :
If CatégoriesCompressées And ProduitsCompressés Then
Dim UserName As String = "******************@gmail.com"
Dim mail As MailMessage = New MailMessage
mail.From = New MailAddress(UserName)
mail.To.Add(New MailAddress(UserName))
mail.Subject = "Test envoi"
mail.Body = "Test"
Dim attach1 As New Attachment(Application.StartupPath & "" & "Catégories.zip")
'Dim attach2 As New Attachment(Application.StartupPath & "" & "Produits.zip")
mail.Attachments.Add(attach1)
'mail.Attachments.Add(attach2)
mail.IsBodyHtml = True
Dim client As SmtpClient = New SmtpClient("smtp.gmail.com", 587)
client.EnableSsl = True
client.Credentials = New System.Net.NetworkCredential("Utilisateur", "Mot de passe")
Try
client.Send(mail)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Else
MsgBox("Non compressé ...")
End If
23 janv. 2011 à 12:10
For each File As String In MaListBoxFichier.Items
.Attachments.Add(Item.Tostring)
Next
23 janv. 2011 à 02:43
6 juin 2010 à 11:14
5 juin 2010 à 22:28
Pour commencer comme je l'ai énuméré plus haut, il faut utiliser les sockets pour communiquer avec le serveur de messagerie, rien que pour cela, il faut créer une classe gérant les méthodes asynchrones (cross-threading) pour éviter les "freez" du thread principale.
Heureusement babboss s'en est gentiment chargé pour nous en nous offrant sa source ici=> http://www.vbfrance.com/codes/SOCKET-CLASS-SOCKET-AVEC-EVENEMENTS-MULTI-CONNEXION-CROSS_36083.aspx
Pour le reste, une fois la connexion au serveur maitrisé, il suffit de dialoguer avec le serveur en suivant scrupuleusement les instructions de la RFC 1939 - FR portant sur le protocole POP ici => http://abcdrfc.free.fr/rfc-vf/rfc1939.html
Et pour aller vraiment plus loin (pour ceux qui ont la dalle ^^) également y intégrer le SSL pour une connexion aux serveurs sécurisé via la RFC 2595 ici =>
http://www.faqs.org/rfcs/rfc2595.html
Plus d'infos là => http://fr.wikipedia.org/wiki/Transport_Layer_Security
Quand j'ai dis qu'il y avait du boulot je ne plaisantais pas !
Bon courage aux chanceux qui voudrons se lancer dans cette aventure !!!
@+ Mayzz
5 juin 2010 à 21:41
5 juin 2010 à 20:40
Sinon tu peux toujours te rabattre sur des composants externes ou payants comme le montre certaines sources ici.
5 juin 2010 à 19:17
je cherche maintenant comment recevoir les messages reçues par mon email???
si quelqu'un à des idées...merci.
5 juin 2010 à 18:53
If attach <> "" Then
.Attachments.Add(New Attachment(attach))
End If
Et il s'aperçevera que la propriété "Attachments" de la classe "System.Net.MailMessage" est une collection et donc qu'elle peut comporter plus d'un élément, je dirais juste que le code de cette source n'est pas optimisé sans vouloir être méchant, de plus elle a déjà été posté.
5 juin 2010 à 18:37
5 juin 2010 à 13:53
A quoi correspond cette valeur de timeout ? ce nombre me
parait faible...
5 juin 2010 à 00:18
par contre on peux attacher qu'une seul piece jointe.
Merci
4 juin 2010 à 21:25
EnvoiMail("Ton Adresse Email", "Le password de l'adresse", "Sujet du message", "l'adresse email du déstinataire", "Le message", "l'adresse du fichier que vous voulez envoyer")
End Sub
exp:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
EnvoiMail("Jalal@hotmail.com", "aredshffjk29089", "Teste", "Moha@yahoo.fr", "Salut moha", "c:\fiche.txt")
End Sub
4 juin 2010 à 19:52
Ca a l'ai bien mais comment on s'en sert ???
Merci
4 juin 2010 à 13:12
4 juin 2010 à 12:19
pour orange : smtp-msa.orange.fr
pour free : smtp.free.fr
pour d'autre voir : http://www.commentcamarche.net/faq/893-adresses-des-serveurs-pop-et-smtp-des-principaux-fai
4 juin 2010 à 02:34
3 juin 2010 à 00:11
2 juin 2010 à 18:37
@ te lire