begin process at 2013 05 24 12:10:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

.NET

 > CLASSE D'ENVOIE DE MAIL PAR SMTPCLIENT

CLASSE D'ENVOIE DE MAIL PAR SMTPCLIENT


 Information sur la source

Note :
Aucune note
Catégorie :.NET Source .NET ( DotNet ) Classé sous :Mail, SmtpClient, MailMessage, MailAddress, email Niveau :Débutant Date de création :20/04/2012 Date de mise à jour :20/04/2012 12:54:36 Vu :2 799

Auteur : wortmany

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


 Description

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

  • //************** 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;
  • }
  • }
  • }
//************** 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;
        }
    }
}



 Historique

20 avril 2012 12:54:36 :
le .Count :)

 Sources du même auteur

Source .NET (Dotnet) SÉRIALISATION (BINAIRE) OBJECT, IMAGE, CLASS ...

 Sources de la même categorie

UTILISER LA SOURIS POUR SCROLLER MON FLOWLAYOUTPANEL par SamsonB
Source .NET (Dotnet) APPEL C DEPUIS C# / APPEL C# DEPUIS C par Moomoon07
Source avec Zip Source .NET (Dotnet) UN PETIT LOGICIEL DE VISUALISATION DE PHOTO par okosa
Source avec Zip Source avec une capture Source .NET (Dotnet) PROBLÈME DU SAC À DOS : RÉSOLUTION PAR MINIMISATION par olivieram2
Source avec Zip Source avec une capture Source .NET (Dotnet) RESOLVER DU JEUX DE L'EMISSION DES CHIFFRES ET DES LETTRES D... par rabixpvb

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) ENVOYER UN EMAIL MULTIDESTINATAIRE EN SMTP AVEC ACCUSÉ DE LE... par Nikachu
Source avec Zip Source avec une capture Source .NET (Dotnet) SEND MAIL WITH GMAIL par ayache78500
Source avec Zip Source avec une capture Source .NET (Dotnet) CRÉATION ET ENVOI DE FICHIERS ZIPPÉS par yoannd
Source avec Zip Source avec une capture Source .NET (Dotnet) SCRUTER UNE PAGE WEB À LA RECHERCHE DES LIENS ET DES ADRESSE... par developper_man
Source avec Zip Source .NET (Dotnet) RECUPERATION DES INFOS DES TASKS SCHEDULED par bigmonkey7

Commentaires et avis

Commentaire de NHenry le 20/04/2012 12:42:08 administrateur CS

Bonjour,

Pourquoi utiliser des ArrayList  à la place de List<T> Bien plus strictes au niveau du typage et donc plus propre ?
Une liste vide de destinaitaire n'est pas que :
if (sDestinataires == null )
Mais aussi si le .Count==0.

Commentaire de wortmany le 20/04/2012 12:50:28

Bonjour,

pour les ArrayList vielle habitude, je sais c'est pas bien.

et pour le .Count oups...

c'est une vieille source sortie du placard ...

Merci pour ces remarques.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Pbl d'envoi de mail [ par coinki ] Salut,J'ai un problème lorsque je souhaite envoyer un mail grâce aux lib System.Net.Mail.J'utilise .Net 2.0 avec VS2005 Express.Mon code :            Probléme d'envoi mail [ par drcmomo ] Bonjour tout le monde , J'ai un Formulaire dans le lequel je dois saisir des données, en cliqueant sur le bouton Valider je dois aussi envoyer un mail Connaitre client email par defaut [ par wald39 ] Bonjour à tous,Je voulais savoir comment connaitre le programme client pour les emails par défaut.En faite dans mon appli je voudrais un bouton qui ou envoi Email avec C# [ par goldziko9 ] salut tous le monde !   j'ai un problems avec l'envoi du mail en C# ;j'explique m'a situation :   je travail sur une apllication de publiciter par mai [c#]WinForms pb envoi mail smtp [ par ludo27600 ] bonjour,j'essaie d'envoyer un mail stmp en WinForms.Je ne retrouve pas les objets System.Web.Mail en WinForms (que j'ai utilisés en WebForms); J'arriv c# envoi mail SmtpFailedRecipientException [ par mr_chafik ] bonjour a tousje suis entrains de développer une appli dont l une des fonctionnalité est d'envoyer un mail a l'aide    de SmtpClient et MailMessage po ENVOI EMAIL [ par handoura02 ] Salut a tous J ai une petite probleme consiste a envoyer un email a partir de mon application je met la code suivant mais ca ne marche pas   Envoi de mail mais si email erroné dans la boucle l'envoi ne se fait pas [ par yann591 ] bonjour, voila g ma ptite fonction pour envoyé des mail :MailMessage email = new MailMessage();                email = MailFormat.Html;                [Mail] Champs CC et Bcc récalcitrants [ par Ikki2504 ] Bonjour à tous,Ma question est probablement stupide, mais ça fait des heures que je bute là dessus, et la msdn ainsi que la bonne douzaine de forums v Mail C# Reprise sur erreur [ par chinois0013 ] Bonjour, J'ai écrit un petit executable en c# (voir ci-dessous) qui me permet d'envoyer des analyses à ma direction qutodiennement via un batch planif


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,607 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales