2009-12-13 11 views
5

Ho messo le impostazioni della posta in app.config e posso inserirle correttamente in un oggetto mailSettingsSectionGroup. Tuttavia, non sono sicuro di come inviare un messaggio utilizzando queste impostazioni.Impostazioni client di posta SMTP nel file app.config C#

Questo è quello che ho finora:

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

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

Che cosa devo fare dopo per utilizzare le mailSettings oggetto?

risposta

14

System.Net.Mail.SmtpClient

In particolare, il metodo Send(...). SmtpClient sarà automaticamente estrarre i dettagli dal file app/web.config. Non è necessario fare nulla per utilizzare la configurazione, è gestita automaticamente.

Modifica per aggiungere SMTP Web.Config Esempio:

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

È possibile fornire un file web.config di esempio o specificare lo schema che verrà letto da SmtpClient? –

+0

Come viene estratto automaticamente il "da"? – mynkow

+0

quindi specifico un indirizzo in "da" ma quando uso un altro indirizzo nel codice l'indirizzo nel codice sovrascrive quello da config. e se non si specifica nulla nel codice (null, stringa vuota) viene generato un errore. – Greg

2

ho una classe personalizzata:

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) 
        { 
        } 
       } 
      } 
     } 
    } 

E questo tira dal mio file app.conf bene.