2009-12-13 8 views
5

Tôi đã đặt cài đặt thư trong app.config và có thể kéo thành công chúng vào đối tượng mailSettingsSectionGroup. Tuy nhiên, tôi không chắc chắn cách gửi thư bằng các cài đặt này.Cài đặt máy khách SMTP Mail trong tệp app.config C#

Đây là những gì tôi có cho đến nay:

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

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

gì tôi cần phải làm gì tiếp theo để sử dụng đối tượng các mailSettings?

Trả lời

14

System.Net.Mail.SmtpClient

Cụ thể, phương pháp Send(...). SmtpClient sẽ tự động tự động lấy chi tiết từ tệp ứng dụng/web.config của bạn. Bạn không cần phải làm bất cứ điều gì để sử dụng cấu hình, tất cả được xử lý tự động.

Chỉnh sửa để thêm SMTP Web.Config Ví dụ:

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

Bạn có thể vui lòng cung cấp tệp web.config mẫu hoặc chỉ định giản đồ mà SmtpClient sẽ đọc không? –

+0

Cách 'từ' được kéo tự động? – mynkow

+0

vì vậy tôi chỉ định địa chỉ trong "từ" nhưng khi tôi sử dụng địa chỉ khác trong mã, địa chỉ trong mã sẽ ghi đè địa chỉ từ cấu hình. và nếu tôi chỉ định không có gì trong mã (null, rỗng chuỗi) một lỗi được ném. – Greg

2

Tôi có một lớp tùy chỉnh:

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

Và điều này kéo từ file app.conf của tôi tốt.