ENVOYER UN MAIL AVEC SMTP DEPUIS GMAIL,HOTMAIL,YAHOO...

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 2 juin 2010 à 18:37
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Derniè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.

https://codes-sources.commentcamarche.net/source/51836-envoyer-un-mail-avec-smtp-depuis-gmail-hotmail-yahoo

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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és 4 Date d'inscription mardi 5 juin 2012 Statut Membre Dernière intervention 14 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és 58 Date d'inscription dimanche 19 septembre 2010 Statut Membre Dernière intervention 26 juillet 2013 1
28 avril 2012 à 01:01
merci pour cet excellent code!!! =)
cs_Appil Messages postés 208 Date d'inscription mercredi 10 avril 2002 Statut Membre Dernière intervention 11 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és 208 Date d'inscription mercredi 10 avril 2002 Statut Membre Dernière intervention 11 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és 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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és 208 Date d'inscription mercredi 10 avril 2002 Statut Membre Dernière intervention 11 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" :

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 ;)
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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és 208 Date d'inscription mercredi 10 avril 2002 Statut Membre Dernière intervention 11 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és 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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"

mail.Attachments.Add(attach1)
mail.Attachments.Add(attach2)
cs_Appil Messages postés 208 Date d'inscription mercredi 10 avril 2002 Statut Membre Dernière intervention 11 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és 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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és 208 Date d'inscription mercredi 10 avril 2002 Statut Membre Dernière intervention 11 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 ...

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
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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és 208 Date d'inscription mercredi 10 avril 2002 Statut Membre Dernière intervention 11 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és 5 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 6 juin 2010
6 juin 2010 à 11:14
Merci bien
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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.

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
jaljalil2010 Messages postés 5 Date d'inscription mercredi 17 février 2010 Statut Membre Derniè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és 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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és 5 Date d'inscription mercredi 17 février 2010 Statut Membre Derniè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és 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
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és 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
5 juin 2010 à 18:37
astouz2000k il te suffit de faire un ZIP MDR ^^
cs_willemijns Messages postés 1 Date d'inscription samedi 5 juin 2010 Statut Membre Derniè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és 50 Date d'inscription samedi 2 juillet 2005 Statut Membre Derniè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és 5 Date d'inscription mercredi 17 février 2010 Statut Membre Derniè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és 50 Date d'inscription samedi 2 juillet 2005 Statut Membre Derniè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és 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
4 juin 2010 à 13:12
merci pour l'info, c'est trés bien du coup comme snippet !
jaljalil2010 Messages postés 5 Date d'inscription mercredi 17 février 2010 Statut Membre Dernière intervention 6 juin 2010
4 juin 2010 à 12:19
il suffit d'ajouter le serveur
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
FriendsService Messages postés 1 Date d'inscription mercredi 10 février 2010 Statut Membre Dernière intervention 4 juin 2010
4 juin 2010 à 02:34
bravo ami :D
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
3 juin 2010 à 00:11
A mettre sur codyx ca... si pas déjà présent ?
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
2 juin 2010 à 18:37
salut, pense tu que cela fonctionne avec orange ou free ou autre ?
@ te lire
Rejoignez-nous