Forumlaire envoi mail en VB

Résolu
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009 - 23 déc. 2009 à 13:28
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 25 déc. 2009 à 22:55
Bonjour,

Voici mon soucis, il faudrait que je créer un petit programme permettant de créer un formulaire, en y ajoutant des champs à remplir tels que : Noms, Prénom, email etc.

Et avec un bouton en dessous où lorsque l'on clique dessus cela envoi les champs remplis à une adresse email précise(un peu comme mailto: en HTML) précise mais ici sans utiliser outlook. Donc voilà, je n'arrive pas du tout à m'en sortir, vu que le VB c'est pas trop mon truc, si quelque peut me passer un petit coup de main, ça serait sympathique.

Merci d'avance.

21 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 déc. 2009 à 22:55
1) Mets les SMTP dans une collection
2) Colle dans une fonction l'envoi du mail : elle doit retourner l'exception
3) Parcours la collection de SMTPs, essaie d'envoyer un mail. Si il y a une erreur, tu passes au suivant. Si c'est OK, tu changes le contenu du Combobox et tu arrêtes le parcours de la collection.
---
VB.NET is good ... VB6 is better
3
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
23 déc. 2009 à 14:12
En cherchant un peu, tu peux trouver ça : http://faqvbnet.developpez.com/?page=netw#netw_sendmail
Facile à adapter, tu n'as plus qu'à créer les contrôles sur ton formulaire.
---
VB.NET is good ... VB6 is better
0
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009
23 déc. 2009 à 15:35
merci pour le site, ça m'a bien aidé a comprendre le fonctionnement, mais je ne sais toujours pas comment m'y prendre

Je n'y connais rien en VB...
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
23 déc. 2009 à 16:36
Voilà comment faire (si tu suis toutes les étapes le programme est fait) :

1) Crée un projet de type Application Windows.
2) Renomme le formulaire (clic droit -> Renommer) en frmProg.
3) Sélectionne l'objet Textbox à gauche, clique sur le form en restant enfoncé et trace comme ça 4 champs avec une étiquette à chaque fois pour dire ce que cela doit contenir (objet Label). Crée aussi un bouton qui permettra à l'utilisateur d'envoyer le mail.
4) Nomme chacun des contrôles que tu as créés : leur nom doit commencer par txt si c'est un champ de saisie, par lbl si c'est une étiquette et par btn si c'est un bouton (lblDe, lblA, lblSujet, lblMessage, btnEnvoyer, etc.)
5) Si ton application ressemble à ça, tu es dans le bon !
6) Double-clique sur Mon projet et dans l'onglet Références, ajoute System.Web. Dans la liste en dessous, coche System.Web.Mail.
7) Sauvegarde le projet en cliquant sur les 3 disquettes dans la barre d'outils.
8) Double-clique sur le bouton et tape ce qui suit (en respectant l'indentation : aère ton code avec des tab's) :
Dim msg As MailMessage New MailMessage, err As Boolean False
Me.btnEnvoyer.Enabled False:Me.txtDe.Enabled False: Me.txtMessage.Enabled = False:Me.txtSujet.Enabled = False:Me.txtA.Enabled = False
msg.From = Me.txtDe.Text
msg.To = Me.txtA.Text
msg.Subject = Me.txtSujet.Text
msg.Body = Me.txtMessage.Text
SmtpMail.SmtpServer = "smtp.nerim.fr"
Try
    SmtpMail.Send(msg)
Catch ex As Exception
    MessageBox.Show(ex.ToString(), "Erreur lors de l'envoi du mail", MessageBoxButtons.OK, MessageBoxIcon.Error)
    err = True
End Try
If Not (err) Then MessageBox.Show("Le mail a été envoyé avec succès !", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information)
Me.txtA.Enabled True: Me.txtSujet.Enabled True:Me.txtMessage.Enabled = True:Me.txtDe.Enabled = True: Me.btnEnvoyer.Enabled = True

9) Clique sur la flèche verte dans la barre d'outils pour exécuter le programme.
10) Si tu as bien suivi ce que j'ai dis, tu devrais obtenir ceci (le nom des contrôles est pas le même chez moi, c'est normal).
---
VB.NET is good ... VB6 is better
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009
23 déc. 2009 à 17:35
Merci de ton aide, j'ai essayer de reproduire ce que tu as écris, j'ai réussi à le faire fonctionner en revanche, ce n'était pas tout à fait cela que je voulais faire, ce n'est pas grave, au moins j'ai appris des choses en plus

Enfaite ce que j'aimerais faire, faudrait que ça ressemble à ça.
Ensuite je voudrais que lorsque je clique sur Envoyer, les données partent à une adresse email précise, voilà.

Merci et encore désolé du dérangement
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
23 déc. 2009 à 18:14
Ah ça change tout ! Tu dois alors faire ceci :[list][*] Définir msg.To et msg.Subject en dur et faire que msg.From = msg.To
[*] Mettre dans une String le contenu des champs (formatté comme tu veux)
[*] Faire que msg.Body = nomDeTaChaine
/list---
VB.NET is good ... VB6 is better
0
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009
23 déc. 2009 à 18:48
Je n'y arrive toujours pas, je dois reprendre le code qui tu m'as expliqué plus haut ?
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 déc. 2009 à 01:41
Oui, sers-t-en comme base en effectuant les changements que j'ai donnés dans mon dernier post.
---
VB.NET is good ... VB6 is better
0
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009
24 déc. 2009 à 10:54
# Mettre dans une String le contenu des champs (formatté comme tu veux)
# Faire que msg.Body = nomDeTaChaine


ça j'ai pas trop compris, si tu pourrais m'expliquer :s
0
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009
24 déc. 2009 à 11:24
Voici le message d'erreur qu'il me reste, je n'arrive pas à résoudre le problème. ICI
0
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009
24 déc. 2009 à 11:32
Excusez-moi du double post...

Voici l'image : ICI

Merci de ton aide.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 déc. 2009 à 12:47
1) Dans Mon Projet -> Références, retire System.Web et ajoute System.Net. En dessous, coche System.Net.Mail.
2) Remplace le code du formulaire par celui-ci (nom des contrôles à adapter) :
Public Class frmProg
    Private Const mail_address As String = "moi@free.fr"
    Private Const mail_subject As String = "EnvoiMail"
    Private Const mail_smtp As String = "smtp.free.fr"

    Private Sub btnSend_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSend.Click
        Dim msg As New MailMessage(mail_address, mail_address, mail_subject, ""), client As New SmtpClient(mail_smtp)
        Dim err As Boolean = False
        Me.btnSend.Enabled False : Me.txtBirthDate.Enabled False : Me.txtForeName.Enabled = False : Me.txtID.Enabled = False : Me.txtLastName.Enabled = False
        msg.Body = "Nom: " & Me.txtLastName.Text & Convert.ToChar(13)
        msg.Body &= "Prénom: " & Me.txtForeName.Text & Convert.ToChar(13)
        msg.Body &= "Num ID: " & Me.txtID.Text & Convert.ToChar(13)
        msg.Body &= "Date de naissance: " & Me.txtBirthDate.Text & Convert.ToChar(13)
        Try
            client.Send(msg)
        Catch ex As Exception
            MessageBox.Show(ex.ToString(), "Erreur lors de l'envoi du mail", MessageBoxButtons.OK, MessageBoxIcon.Error)
            err = True
        End Try
        If Not (err) Then MessageBox.Show("Le mail a été envoyé avec succès !", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Me.txtLastName.Enabled True : Me.txtID.Enabled True : Me.txtForeName.Enabled = True : Me.txtBirthDate.Enabled = True : Me.btnSend.Enabled = True
    End Sub
End Class

---
VB.NET is good ... VB6 is better
0
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009
24 déc. 2009 à 14:36
ça fonctionne chez toi ?

Regarde moi ça me donne ce message d'erreur, visible ICI
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 déc. 2009 à 17:29
Tu dois changer ces lignes :
#Private Const mail_address As String = " moi@free.fr " 'adresse mail à qui envoyer le message
#Private Const mail_smtp As String = "smtp.free.fr" 'serveur smtp à qui envoyer le message
---
VB.NET is good ... VB6 is better
0
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009
25 déc. 2009 à 11:08
Je m'étais trompé avec le smtp, j'avais confondu avec le pop (On ne se moque pas!! (haha)

j'ai testé ça marche NIQUEL, encore merci !

Par contre,

Par exemple, moi mon FAI c'est Free, si je veux faire passer le logiciel a des collègues mais qui eux ne sont pas chez Free, comment je peux faire?
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 déc. 2009 à 11:52
Faut rajouter un TextBox (avec Label, évidemment), supprimer la constante mail_smtp et dans le code, utiliser txtSmtp.Text
---
VB.NET is good ... VB6 is better
0
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009
25 déc. 2009 à 11:56
et dans le Textbox l'utilisateur devra y rentrer quoi ? :s
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 déc. 2009 à 13:00
L'adresse du serveur SMTP ...
---
VB.NET is good ... VB6 is better
0
Germiinator Messages postés 12 Date d'inscription mercredi 25 novembre 2009 Statut Membre Dernière intervention 25 décembre 2009
25 déc. 2009 à 18:18
Sans rajouter ce textbox, on pourrait plutôt ajouter des conditions dans le code où il y aurait la liste des serveurs SMTP connus et que si l'envoi du mail ne marche pas par exemple pour le serveur smtp.free.fr alors il faudrait passé au serveur suivant et ainsi de suite ?

Par exemple ici il y a la liste des serveurs SMTP connus.


Excuse-moi encore une fois, d'ailleurs ça sera certainement ma dernière question !
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
25 déc. 2009 à 19:21
Tu peux aussi mettre un Combobox pour remplacer ce Textbox où tu y mets les serveurs SMTP. Il existe aussi une propriété Text (l'élément sélectionné). Nomme-le cmbSmtp et tout ce que tu auras à remplacer c'est txtSmtp par cmbSmtp.
---
VB.NET is good ... VB6 is better
0
Rejoignez-nous