none
Envoi de mails via une application ASP.Net RRS feed

  • Question

  •  

    Bonjour Guillaume,

     

    voilà je poste un autre sujet parmis d'autres qui vont venir certainnement, celui là concerne l'envoi de mails via une application développé en ASP.Net (la mienne je veux dire)

     

    j'aimerai savoir comment initier un envoi de mail après telle ou telle action, exemple:

     

    sur une liste déroulante j'ai les items "Accépté" et "Refusé", accompagnée de deux TextBoxs :

     

    Liste ----- "Accépté" et "Refusé"

    TextBox1 ----- le nom client

    TextBox2 ----- Num tel.

     

    si l'item "Accépté" est selectionné, aucune action ne se passe, par contre si c'est le second item equi est séléctionné là un mail est envoyé à une personne bien précise indiquant les 03 informations cités ci-dessus et bien sûr en précisant le motif du refus.

     

    il faut savoir que le service SMTP est bien activé sur le serveur IIS.

     

    est-ce possible de m'aider sur ce coup Guillaume, je n'ai aucue idée concernant cette partie là d'ASP.Net.

     

    merci encore

     

    Alexy..  

    dimanche 24 février 2008 16:53

Réponses

  • Bonjour,

    Tout ce qu'il vous faut pour l'envoi de mail se trouve dans le namespace System.Net.Mail.

     

    Voila un petit exemple supposant vous avez sur votre page une DropDownList nommée "ddlType" contenant 2 items (Accepté, 0) et (Refusé, 1), une TextBox "tbNom", une TextBox "tbTel" et un bouton "btnOk" :

     

    Code Snippet

    protected void btnOk_Click(object sender, EventArgs e)

    {

    if ("0" == this.ddlType.SelectedValue)

    {

    // le type étant accepté, on ne fait rien

    return;

    }

     

    // type refusé, on envoi un mail

    using (MailMessage msg = new MailMessage("from@mail.com", "to@mail.com"))

    {

    // crée le message

    msg.Subject = "Sujet de l'email";

    msg.Body = String.Format(

    "Nom: {0}{1}Tel: {2}"

    , this.tbNom.Text

    , Environment.NewLine

    , this.tbTel.Text

    );

     

    // envoi le message.

    try

    {

    // on utilise le constructeur vide qui va chercher ses infos dans le fichier

    // de configuration ()

    SmtpClient smtp = new SmtpClient();

    smtp.Send(msg);

    }

    catch (Exception ex)

    {

    // gérer les erreurs...

    }

    }

    }

     

     

    Et voila un exemple de fichier de configuration (vu que la config de l'objet SmtpClient est chargé dedans) :

     

    Code Snippet

    <system.net>

    <mailSettings>

    <smtp deliveryMethod="Network">

    <network defaultCredentials="true" host="localhost" port="25"/>

    </smtp>

    </mailSettings>

    </system.net>

     

     

    Guillaume
    lundi 25 février 2008 09:25
  • Bonjour Guillaume,

     

    Et merci pour ton retour rapide, je vais commencer à tester tout celà et je te reviens, ceci dit , est-ce que tu peux m'éclairer par rapport au point   

     

    Code Snippet

     

    <network defaultCredentials="true" host="localhost" port="25"/>

     

     

    que faut-il mettre au niveau de la partie "host" , l'adresse du serveur exchange de l'entreprise ou bien autre chose ??

     

    merci de m'aider en détail sur point avec un exemple si possible.

     

    cdt

     

    Alexy...

    lundi 25 février 2008 12:10
  • Bonjour,

    Si vous avez un serveur exchange et que vous voulez utiliser celui-ci, le plus simple est d'utiliser la ligne suivante :

     

    <network defaultCredentials="true" host="adresse du serveur exchange"/>

     

    L'attribut defaultCredentials indique si pour vous connectez au sevreur de mail l'appli utilisera le compte system ou le login/mot de passe fournit par les attributs userName et password sur le même noeud network.

    L'attribut host indique l'adresse ou l'ip du serveur mail. Cela peut être le serveur exchange de l'entreprise ou un service SMTP sous IIS.

    L'attribut port indique le port sur lequel se connecter, par défaut il vaut 25 qui est le port standard. Il n'est intéressant de la spécifier que si le port n'est pas celui standard.

    Comme indiqué pour l'attribut defaultCredentials, vous pouvez avoir les attributs userName et password si vous ne voulez pas utiliser le compte system pour vous connecter au serveur de mail.

     

    Guillaume

     

     

    lundi 25 février 2008 12:52
  • Bonjour Guillaume,

     

    j'aimerai revenir sur certains points concernant l'envoi de mail :

     

    d'après ce que j'ai compris, si je veux utiliser mon compte email pour envoyer des mails je dois rajouter les attributs username et password dans le noeud Network comme suit:

     

    Code Snippet

      <system.net>
        <mailSettings>
          <smtp>
            <network 
                 defaultCredentials
    ="true"

                 host="adresse du serveur exchange"
                 port="
    25"
                 userName="
    username"
                 password="
    password" />
          </smtp>
        </mailSettings>
      </system.net>

     

     

    une question: si mon mot de passe expire, je dois le changer à nouveau sur le fichier config ??

     

    autre chose: en utilisant le nom du serveur Exchange exp : Serveur.entreprise.com

    dois-je laisser le tout dans le noeud <smtp> ou bien dois-je agir autrement ??

     

    merci à toi

     

    Alexy..

    jeudi 17 avril 2008 11:47
  • Bonjour,

    Les attributs userName et password permettent de spécifier les données nécessaire à la connexion au serveur Exchange. Leurs utilisations dépend de la sécurité appliqué aux serveur Exchange. Donc bien entendu si le mot de passe change, il faut le changer pour l'application.

    Concernant l'utilisation de votre compte, pourquoi voulez vous l'utiliser ? Vous pouvez si vous voulez mettre votre mail dans le From du message pour qu'au cas ou un problème existe le mail re retour vous soit renvoyé. Si vous voulez une copie du message, je vous conseillerai d'ajouter votre email dans bcc de tous les messages.

    Dans tous les cas, si vous ne voulez pas mettre les données dans le noeud smtp, vous pouvez les spécifier dans le constructeur de SmtpClient et donc récupérer les données de manière programmatique depuis n'importe quelle source de données.

    jeudi 17 avril 2008 12:07
  • Bonjour,

     

    justement Guillaume l'adresse qui va envoyer les mails et bien la mienne et je vais la mettre dans la partie "From" et en "BCC" également.

     

    pour la partie Nom de l'adresse du serveur Exchage , est-ce c'est correcte la syntaxe que j'ai écrites avant ?? ou bien dois-je utiliser l'adresse Ip de ce serveur, et si j'utilise le nom du serveur Exchage, dois-je mentionner le port "25" ou bien ce n'est pas necessaire??

     

    merci çà toi

     

    Alexy..  

     

    jeudi 17 avril 2008 12:44
  • Bonjour,

    Oui vous pouvez mettre le nom du serveur a partir du moment ou sur la machine si vous lancé la commande "ping <nom du serveur>" cela marche (le serveur web à accès au DNS). Si le port du serveur Exchange est 25, pas besoin de la préciser, c'est le port par défaut.

    Pour l'authentification, si vous pouvez vous connecter au serveur avec le compte system (donc pas de userName, password), utilisez cette méthode. En remplissant correctement le champs From, les destinataires verront un mail venant de votre compte comme si vous l'aviez envoyé via Outlook avec votre compte.

    Dans tous les cas, rien ne vous empeche de faire une petite page de tests pour vous envoyer des mails et régler/tester les différents paramètres.

     

    jeudi 17 avril 2008 13:45
  • Bonjour,

     

    merci Guillaume pour ces lumière, il y a juste un petit truc qui m'échappe:

     

    c'est quoi le compte système ?? ça peut te paraître un peu nul mais franchement je suis un peu à coté là.

     

    merci à toi

     

    Alexy.. 

    jeudi 17 avril 2008 15:03
  • Bonjour,

    Dans le système exploitation il existe un compte spécial qui est le compte système. Se compte possède des droits spécifique et sert notamment pour tout ce qui est service windows et application nécéssaire par le système d'exploitation.

    Par contre dans mes précédents message je me suis trompé. En effet en ASP.Net, par défaut le serveur utilise un compte particulié généralement appelé ASPNET.

    vendredi 18 avril 2008 12:10

Toutes les réponses

  • Bonjour,

    Tout ce qu'il vous faut pour l'envoi de mail se trouve dans le namespace System.Net.Mail.

     

    Voila un petit exemple supposant vous avez sur votre page une DropDownList nommée "ddlType" contenant 2 items (Accepté, 0) et (Refusé, 1), une TextBox "tbNom", une TextBox "tbTel" et un bouton "btnOk" :

     

    Code Snippet

    protected void btnOk_Click(object sender, EventArgs e)

    {

    if ("0" == this.ddlType.SelectedValue)

    {

    // le type étant accepté, on ne fait rien

    return;

    }

     

    // type refusé, on envoi un mail

    using (MailMessage msg = new MailMessage("from@mail.com", "to@mail.com"))

    {

    // crée le message

    msg.Subject = "Sujet de l'email";

    msg.Body = String.Format(

    "Nom: {0}{1}Tel: {2}"

    , this.tbNom.Text

    , Environment.NewLine

    , this.tbTel.Text

    );

     

    // envoi le message.

    try

    {

    // on utilise le constructeur vide qui va chercher ses infos dans le fichier

    // de configuration ()

    SmtpClient smtp = new SmtpClient();

    smtp.Send(msg);

    }

    catch (Exception ex)

    {

    // gérer les erreurs...

    }

    }

    }

     

     

    Et voila un exemple de fichier de configuration (vu que la config de l'objet SmtpClient est chargé dedans) :

     

    Code Snippet

    <system.net>

    <mailSettings>

    <smtp deliveryMethod="Network">

    <network defaultCredentials="true" host="localhost" port="25"/>

    </smtp>

    </mailSettings>

    </system.net>

     

     

    Guillaume
    lundi 25 février 2008 09:25
  • Bonjour Guillaume,

     

    Et merci pour ton retour rapide, je vais commencer à tester tout celà et je te reviens, ceci dit , est-ce que tu peux m'éclairer par rapport au point   

     

    Code Snippet

     

    <network defaultCredentials="true" host="localhost" port="25"/>

     

     

    que faut-il mettre au niveau de la partie "host" , l'adresse du serveur exchange de l'entreprise ou bien autre chose ??

     

    merci de m'aider en détail sur point avec un exemple si possible.

     

    cdt

     

    Alexy...

    lundi 25 février 2008 12:10
  • Bonjour,

    Si vous avez un serveur exchange et que vous voulez utiliser celui-ci, le plus simple est d'utiliser la ligne suivante :

     

    <network defaultCredentials="true" host="adresse du serveur exchange"/>

     

    L'attribut defaultCredentials indique si pour vous connectez au sevreur de mail l'appli utilisera le compte system ou le login/mot de passe fournit par les attributs userName et password sur le même noeud network.

    L'attribut host indique l'adresse ou l'ip du serveur mail. Cela peut être le serveur exchange de l'entreprise ou un service SMTP sous IIS.

    L'attribut port indique le port sur lequel se connecter, par défaut il vaut 25 qui est le port standard. Il n'est intéressant de la spécifier que si le port n'est pas celui standard.

    Comme indiqué pour l'attribut defaultCredentials, vous pouvez avoir les attributs userName et password si vous ne voulez pas utiliser le compte system pour vous connecter au serveur de mail.

     

    Guillaume

     

     

    lundi 25 février 2008 12:52
  • Bonjour Guillaume,

     

    j'aimerai revenir sur certains points concernant l'envoi de mail :

     

    d'après ce que j'ai compris, si je veux utiliser mon compte email pour envoyer des mails je dois rajouter les attributs username et password dans le noeud Network comme suit:

     

    Code Snippet

      <system.net>
        <mailSettings>
          <smtp>
            <network 
                 defaultCredentials
    ="true"

                 host="adresse du serveur exchange"
                 port="
    25"
                 userName="
    username"
                 password="
    password" />
          </smtp>
        </mailSettings>
      </system.net>

     

     

    une question: si mon mot de passe expire, je dois le changer à nouveau sur le fichier config ??

     

    autre chose: en utilisant le nom du serveur Exchange exp : Serveur.entreprise.com

    dois-je laisser le tout dans le noeud <smtp> ou bien dois-je agir autrement ??

     

    merci à toi

     

    Alexy..

    jeudi 17 avril 2008 11:47
  • Bonjour,

    Les attributs userName et password permettent de spécifier les données nécessaire à la connexion au serveur Exchange. Leurs utilisations dépend de la sécurité appliqué aux serveur Exchange. Donc bien entendu si le mot de passe change, il faut le changer pour l'application.

    Concernant l'utilisation de votre compte, pourquoi voulez vous l'utiliser ? Vous pouvez si vous voulez mettre votre mail dans le From du message pour qu'au cas ou un problème existe le mail re retour vous soit renvoyé. Si vous voulez une copie du message, je vous conseillerai d'ajouter votre email dans bcc de tous les messages.

    Dans tous les cas, si vous ne voulez pas mettre les données dans le noeud smtp, vous pouvez les spécifier dans le constructeur de SmtpClient et donc récupérer les données de manière programmatique depuis n'importe quelle source de données.

    jeudi 17 avril 2008 12:07
  • Bonjour,

     

    justement Guillaume l'adresse qui va envoyer les mails et bien la mienne et je vais la mettre dans la partie "From" et en "BCC" également.

     

    pour la partie Nom de l'adresse du serveur Exchage , est-ce c'est correcte la syntaxe que j'ai écrites avant ?? ou bien dois-je utiliser l'adresse Ip de ce serveur, et si j'utilise le nom du serveur Exchage, dois-je mentionner le port "25" ou bien ce n'est pas necessaire??

     

    merci çà toi

     

    Alexy..  

     

    jeudi 17 avril 2008 12:44
  • Bonjour,

    Oui vous pouvez mettre le nom du serveur a partir du moment ou sur la machine si vous lancé la commande "ping <nom du serveur>" cela marche (le serveur web à accès au DNS). Si le port du serveur Exchange est 25, pas besoin de la préciser, c'est le port par défaut.

    Pour l'authentification, si vous pouvez vous connecter au serveur avec le compte system (donc pas de userName, password), utilisez cette méthode. En remplissant correctement le champs From, les destinataires verront un mail venant de votre compte comme si vous l'aviez envoyé via Outlook avec votre compte.

    Dans tous les cas, rien ne vous empeche de faire une petite page de tests pour vous envoyer des mails et régler/tester les différents paramètres.

     

    jeudi 17 avril 2008 13:45
  • Bonjour,

     

    merci Guillaume pour ces lumière, il y a juste un petit truc qui m'échappe:

     

    c'est quoi le compte système ?? ça peut te paraître un peu nul mais franchement je suis un peu à coté là.

     

    merci à toi

     

    Alexy.. 

    jeudi 17 avril 2008 15:03
  • Bonjour,

    Dans le système exploitation il existe un compte spécial qui est le compte système. Se compte possède des droits spécifique et sert notamment pour tout ce qui est service windows et application nécéssaire par le système d'exploitation.

    Par contre dans mes précédents message je me suis trompé. En effet en ASP.Net, par défaut le serveur utilise un compte particulié généralement appelé ASPNET.

    vendredi 18 avril 2008 12:10