Envoi de mail avec pièce jointe

Soyez le premier à donner votre avis sur cette source.

Vue 12 392 fois - Téléchargée 1 766 fois

Description

Bonjour,

Permet soit d'envoyer des mails "avec pièce jointe directement", soit d'envoyer des mails "sans pièce jointe via un objet éditeur de mails" (outlook généralement).

Cordialement.

Joe.

Source / Exemple :


'
' 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

Conclusion :


Code VB2010 pour PC Windows XP ou supérieur, nécessite la présence de la FrameWork (gratuite depuis téléchargement Internet si besoin).

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

MiharbiDoNo
Messages postés
150
Date d'inscription
dimanche 17 mai 2009
Statut
Membre
Dernière intervention
25 mai 2012
-
bonjour,
sous Button1_Click, si client.Send echoue, DotNetMail.Dispose et client.Dispose ne vont pas etre executés, sauf qu'il faut les "disposer" en tous cas :)
ehjoe
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
2 -
Bonjour MiharbiDoNo,

Merci de ces observations dont j'ai tenu compte tout en améliorant la saisie.

Cordialement.

Joe.
kumultoo
Messages postés
1
Date d'inscription
jeudi 16 novembre 2006
Statut
Membre
Dernière intervention
22 février 2012
-
Bonjour
comment envoyer des emails au format HTML
et sur tout reception les données d'un formulaire les envoyer
merci de me repondre
blq
Messages postés
98
Date d'inscription
vendredi 22 octobre 1999
Statut
Membre
Dernière intervention
13 juin 2016
-
Fonctionne et donne une interface graphique pour tester, mais rien de nouveau au regard des autres exemples SMTP:
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...
ehjoe
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
2 -
Bonjour kumultoo,

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.

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.