Classe d'envoie de mail par smtpclient

Contenu du snippet

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;
        }
    }
}

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.