Petite classe permettant d'envoyer un mail avec ou sans PJ.
Dans l'exemple je prend un fichier html pour le corp mais on peut le faire dans le code.
Source / Exemple :
//************** Test ******************
using System;
using System.Windows.Forms;
using System.Collections;
using System.IO;
namespace EnvoiMail
{
class Program
{
static void Main(String[] args)
{
String sSubj;
String sFileBody;
String sSmtpServeur;
String sAddExpediteur;
String sNomExpediteur;
String sAddDestinataire;
#if DEBUG
sSubj = "Test";//"Objet du Mail";
sFileBody = "Body.html";//"Chemin vers un fichier html contenant le corps du mail";
sSmtpServeur = "Serveur smtp";
sAddExpediteur = "email de l'expediteur";
sNomExpediteur = "Toto";//"Nom de l'expediteur";
sAddDestinataire = "email des destinataires (Séparateur ';')";
#else
//Gestion des variables args en mode Release
//
#endif
SendMail Mail = new SendMail(sSmtpServeur, sAddExpediteur, sNomExpediteur);
ArrayList Dest = new ArrayList();
foreach (String sAdd in sAddDestinataire.Split(';'))
{
Dest.Add(sAdd);
}
String Subj = sSubj;
StreamReader sr = new StreamReader(sFileBody);
String sBody = sr.ReadToEnd();
sr.Close();
if (Mail.sendMail(Dest, null, null, Subj, null, sBody, true))
MessageBox.Show("Mail Envoyé");
else
MessageBox.Show("Erreur");
}
}
}
//********* Fichier Body.html **********
<br>
Bonjour,
<br>
Ceci est un test.
<br>
Cdt.
<br>
//********** Classe SendMail ***********
using System;
using System.Net.Mail;
using System.Collections;
namespace EnvoiMail
{
public class SendMail
{
private MailAddress _adrExpMail; // Adresse mail de expéditeur
private MailMessage _mail; // le mail lui même
private SmtpClient _smtp; // une variable pour gérer le serveur SMTP
private Attachment _attachement; // une variable attachement pour ajouter des fichiers joints
public SendMail()
{
// initialisation des variables
_mail = new MailMessage();
_smtp = new SmtpClient();
_adrExpMail = new MailAddress("","");
}
public SendMail(string sServerSmtp)
{
// initialisation des variables
_mail = new MailMessage();
_smtp = new SmtpClient(sServerSmtp);
_adrExpMail = new MailAddress("","");
}
public SendMail(string sServerSmtp, string sExpediteur, string sDisplayName)
{
// initialisation des variables
_mail = new MailMessage();
_smtp = new SmtpClient(sServerSmtp);
_adrExpMail = new MailAddress(sExpediteur, sDisplayName);
}
//variable pour gérer le serveur SMTP
public SmtpClient smtp
{
get
{
return _smtp;
}
set
{
_smtp = value;
}
}
//variable pour le mail (lecture uniquement)
public MailMessage mail
{
get
{
return _mail;
}
}
//variable adresse mail expediteur
public MailAddress AdresseMailExpediteur
{
get
{
return _adrExpMail;
}
set
{
_adrExpMail = value;
}
}
/// <summary>
/// Envoi de l'email
/// </summary>
/// <param name="sDestinataires">Listes des destinataires</param>
/// <param name="sCC"> Listes des destinataires en copie</param>
/// <param name="sCCC"> Listes des destinataires en copie cachée </param>
/// <param name="sSubject"> Sujet de l'email</param>
/// <param name="sjoints"> Liste des pieces jointes</param>
/// <param name="sBody">Corps du message </param>
/// <param name="bBodyHtml">True = html, false = texte </param>
public Boolean sendMail(ArrayList sDestinataires, ArrayList sCC, ArrayList sCCC, String sSubject, ArrayList sJoints, String sBody,Boolean bBodyHtml)
{
Boolean bRetour=false;
try
{
// Si pas de destinataires on sort avec une erreur
if (sDestinataires == null && sDestinataires.Count != 0)
{
bRetour = false;
throw new Exception("La liste des destinataires ne peut pas être vide !");
}
//ajout des destinataires.
for (int i = 0; i <= sDestinataires.Count - 1; i++)
{
_mail.To.Add(((String)sDestinataires[i]));
}
//ajout des destinataires en copie
if (sCC != null)
{
for (int i = 0; i <= sCC.Count - 1; i++)
{
_mail.CC.Add(((String)sCC[i]));
}
}
//ajout des destinataires en copie caché
if (sCCC != null)
{
for (int i = 0; i <= sCCC.Count - 1; i++)
{
_mail.Bcc.Add(((String)sCCC[i]));
}
}
//ajout des pieces jointes.
if (sJoints != null)
{
for (int i = 0; i <= sJoints.Count - 1; i++)
{
_attachement = new Attachment((String)sJoints[i]);
_mail.Attachments.Add(_attachement);
}
}
// ajout du sujet.
_mail.Subject = sSubject;
//on ajoute le corps du message
_mail.IsBodyHtml = bBodyHtml;
_mail.Body = sBody;
//on ajoute l'expediteur
_mail.From = _adrExpMail;
// Envoi du mail
_smtp.Send(_mail);
bRetour = true;
}
catch
{
bRetour = false;
}
return bRetour;
}
}
}
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.