4/5 (8 avis)
Vue 15 824 fois - Téléchargée 2 155 fois
' ' vb2010 : envoie direct ou via outlook de mails avec ou sans pièce joints (mailsGO) Option Explicit On Public Class Form1 Dim f As String Dim etat As Boolean Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' création de texte dans les objets + un fichier pour le test f = My.Application.Info.DirectoryPath & "\mailsGO.txt" TextBox1.Text = "destinataire1@free.fr" ' destinataire 1 TextBox7.Text = "destinataire2@free.fr" ' destinataire 2 ... TextBox2.Text = "expediteur@free.fr" ' expéditeur TextBox8.Text = "" ' MDP expéditeur TextBox3.Text = "Bonjour à tous" ' titulus TextBox4.Multiline = True TextBox4.Text = "Un petit mail." & vbCrLf & " A bientôt" & vbCrLf & " Cordialement, Y" ' corpus TextBox5.Text = 587 ' port F.A.I TextBox6.Text = "smtp.free.fr" ' adresse F.A.I ' rechercher et adapter adresse et port selon fournisseur... Dim p As New System.IO.StreamWriter(f) ' fichier temporaire pour simuler l'envoi de pièce jointe p.WriteLine("Fichier attaché") p.Close() TextBox9.Multiline = True TextBox9.Text = f ' pièce jointe RadioButton2.Checked = True ' choix du mode d'envoi (direct ou via objet) Call RadioButton2_Click(sender, e) End Sub Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim r As Integer Dim m As String = "Il n'y a pas de titre ou de message " & vbLf & vbLf m = m & "Voulez-vous envoyer le courrier ainsi" & vbLf If TextBox3.Text = "" Or TextBox4.Text = "" Then r = MsgBox(m, vbQuestion + vbYesNo + vbDefaultButton2) If r <> vbYes Then TextBox3.Focus() Exit Sub End If End If ' Dim client As New System.Net.Mail.SmtpClient Dim piecejointe As New System.Net.Mail.Attachment(f) Dim DotNetMail As New System.Net.Mail.MailMessage() Try ' envoir mail DIRECT Cursor.Current = Cursors.WaitCursor client.Credentials = New System.Net.NetworkCredential(TextBox2.Text, TextBox8.Text) ' expéditeur + son MDP client.Port = TextBox5.Text ' port FAI client.Host = TextBox6.Text ' adresse FAI client.EnableSsl = False DotNetMail.From = New System.Net.Mail.MailAddress(TextBox2.Text) ' expéditeur DotNetMail.To.Add(TextBox1.Text) ' destinataire 1 If TextBox7.Text <> "" Then DotNetMail.To.Add(TextBox7.Text) ' destinataire 2 ... DotNetMail.Subject = TextBox3.Text ' titulus DotNetMail.Body = TextBox4.Text ' corpus If TextBox9.Text <> "" Then DotNetMail.Attachments.Add(piecejointe) client.Send(DotNetMail) DotNetMail.Dispose() Catch err As Exception MsgBox(err.ToString) GoTo fin End Try MsgBox("OK") fin: Cursor.Current = Cursors.Default client.Dispose() piecejointe.Dispose() DotNetMail.Dispose() End Sub Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ' envoi mail par objet gestionnaire System.Diagnostics.Process.Start("mailto:" & TextBox1.Text & "?subject=" & TextBox3.Text & "&body=" & TextBox4.Text) End Sub Sub RadioButton1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton1.Click etat = False ' choix envoi via gestionnaire Call textboxVisibilite() End Sub Sub RadioButton2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton2.Click etat = True ' choix envoi direct Call textboxVisibilite() End Sub Sub textboxVisibilite() TextBox2.Visible = etat TextBox8.Visible = etat TextBox5.Visible = etat TextBox6.Visible = etat TextBox9.Visible = etat Button1.Visible = False Button2.Visible = False If etat = True Then Button1.Visible = True If etat = False Then Button2.Visible = True End Sub Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Try Process.Start("http://irolog.free.fr") Catch ex As Exception MsgBox("Impossible d'ouvrir le site ", vbExclamation, My.Application.Info.ProductName) End Try End Sub Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Try Kill(f) Catch ex As Exception End Try End Sub End Class
14 juin 2012 à 09:47
Moi non plus je ne sais pas attacher une pièce de cette façon, je ne sais même pas si c'est possible d'ailleurs, pas certain car dans les forums de programmation généralement personne ne répond...
Cordialement, Joe.
14 juin 2012 à 09:42
Ton code a un coté utile car complet avec son interface graphique, mais l'envoi de mail dans Button2_Click() via l'appel suivant ne propose pas d'attachement de fichier :
System.Diagnostics.Process.Start("mailto:" & TextBox1.Text & "?subject=" & TextBox3.Text & "&body=" & TextBox4.Text)
Un exemple avec un attachement aurait été intéressant à proposer. Personnellement, je n'ai pas la réponse et je n'ai pas cherché...
A toute fin utile pour les éventuels autres lecteurs : ton code fonctionne sans souci avec Visual Basic Express 2010.
13 juin 2012 à 20:15
Il n'y a sans doute rien de nouveau, je n'ai même pas cherché d'ailleurs. Je voyais que cette question revenait souvent, ayant le code pour y répondre, j'ai simplement fait un petit programme pour utiliser ce dernier, et je suis totalement confus de savoir que ceci existait déjà, navré même :o)
Cordialement. Joe.
13 juin 2012 à 20:03
Je ne sais pas envoyer des mails directement au format HTM, enfin, je ne sais pas sous quelle forme c'est envoyé d'ailleurs, tout ce que je sais c'est que c'est lisible à l'arrivée, ça me suffit :o) Néanmoins en secours tu peux toujours joindre un document HTML...
Pour ce qui est de ta seconde phrase, la seconde ligne, j'ai un peu de mal à comprendre, serait-ce que tu voudrais savoir comment envoyer les différentes données qui peuvent se trouver sur une form (textBox par exemple) via le code ci-dessus ?
Cordialement, Joe.
13 juin 2012 à 17:56
proposé en 2010 http://www.vbfrance.com/codes/ENVOYER-MAIL-AVEC-SMTP-DEPUIS-GMAIL-HOTMAIL-YAHOO_51836.aspx
et
proposé en 2007 http://www.vbfrance.com/codes/ENVOYER-MAIL-AVEC-SERVEUR-SMTP-CONNEXION-AVEC-LOGIN_40401.aspx
Il y a d'ailleurs beaucoup plus complet coté graphique proposé en 2006 : http://www.vbfrance.com/codes/MESSAGERIE-ELECTRONIQUE-VB-NET-2005_37866.aspx
Dommage que l'exemple d'envoi par l'outil de mail par défaut ne propose pas l'attachement de fichier...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.