2009-12-13 4 views
5

J'ai mis les paramètres de messagerie dans app.config et je peux les importer dans un objet mailSettingsSectionGroup. Cependant, je ne suis pas sûr de savoir comment envoyer un message en utilisant ces paramètres.Paramètres du client de messagerie SMTP dans le fichier app.config C#

C'est ce que j'ai jusqu'à présent:

System.Configuration.Configuration config =  
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

MailSettingsSectionGroup mailSettings = 
config.GetSectionGroup("system.net/mailSettings") as 
System.Net.Configuration.MailSettingsSectionGroup; 

Que dois-je faire ensuite d'utiliser les mailSettings objet?

Répondre

14

System.Net.Mail.SmtpClient

Plus précisément, le procédé Send(...). SmtpClient va automatiquement tirer les détails de votre app/web.config fichier. Vous n'avez pas besoin de faire quoi que ce soit pour utiliser la configuration, tout est géré automatiquement.

Modifier pour ajouter SMTP Web.Config Exemple:

<system.net> 
    <mailSettings> 
     <smtp from="[email protected]"> 
      <network host="yoursmtpserver.com" /> 
     </smtp> 
    </mailSettings> 
</system.net> 
+0

Pouvez-vous fournir un exemple de fichier web.config ou spécifier le schéma que SmtpClient va lire? –

+0

Comment le 'de' est tiré automatiquement? – mynkow

+0

donc je spécifie une adresse dans "from" mais quand j'utilise une autre adresse dans le code l'adresse dans le code remplace celle de config. et si je ne spécifie rien dans le code (null, chaîne vide) une erreur est levée. – Greg

2

J'ai une classe personnalisée:

using System; 
    using System.Configuration; 
    using System.Net; 
    using System.Net.Configuration; 
    using System.Net.Mail; 

    namespace MyNameSpace 
    { 
     internal static class SMTPMailer 
     { 
      public static void SendMail(string to, string subject, string body) 
      { 
       Configuration oConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
       var mailSettings = oConfig.GetSectionGroup("system.net/mailSettings") as MailSettingsSectionGroup; 

       if (mailSettings != null) 
       { 
        int port = mailSettings.Smtp.Network.Port; 
        string from = mailSettings.Smtp.From; 
        string host = mailSettings.Smtp.Network.Host; 
        string pwd = mailSettings.Smtp.Network.Password; 
        string uid = mailSettings.Smtp.Network.UserName; 

        var message = new MailMessage 
         { 
          From = new MailAddress(@from) 
         }; 
        message.To.Add(new MailAddress(to)); 
        message.CC.Add(new MailAddress(from)); 
        message.Subject = subject; 
        message.IsBodyHtml = true; 
        message.Body = body; 

        var client = new SmtpClient 
         { 
          Host = host, 
          Port = port, 
          Credentials = new NetworkCredential(uid, pwd), 
          EnableSsl = true 
         }; 

        try 
        { 
         client.Send(message); 
        } 
        catch (Exception ex) 
        { 
        } 
       } 
      } 
     } 
    } 

Et ce tire de mon dossier de app.conf très bien.

Questions connexes