Envoi de mail avec pièce jointe

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

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.