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).
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.