2010-09-01 6 views
16

Tôi đang lưu trữ MailSettings của mình trong web.config, tuy nhiên khi tôi gửi thư, máy chủ SMTP của tôi báo cáo lại rằng tôi cần sử dụng xác thực. Tôi đã có tên người dùng/mật khẩu của tôi trong tập tin cấu hình, nhưng nó vẫn không thành công.Xác thực SMTP với MailSettings của tập tin cấu hình

Nó hoạt động nếu tôi làm như sau, nhưng có vẻ như là một bước bổ sung. Không phải là nó chỉ lấy nó từ tập tin cấu hình và sử dụng xác thực tự động?

System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration(
    HttpContext.Current.Request.ApplicationPath); 
MailSettingsSectionGroup settings = 
    (MailSettingsSectionGroup) config.GetSectionGroup("system.net/mailSettings"); 

SmtpClient client = new SmtpClient(); 
client.Credentials = new NetworkCredential(
    settings.Smtp.Network.UserName, settings.Smtp.Network.Password); 

Web.config

<system.net> 
    <mailSettings> 
     <smtp from="[email protected]" deliveryMethod="Network"> 
      <network host="mail.xyz.com" defaultCredentials="true" 
       userName="[email protected]" password="abc123" /> 
     </smtp> 
    </mailSettings> 
</system.net> 

System.Net.Mail.SmtpException

Đã vượt quá phân bổ lưu trữ. Phản hồi của máy chủ là: Vui lòng sử dụng xác thực smtp . Xem http://www.myISP.com/support/smtp-authentication.aspx

"Phân bổ lưu trữ vượt quá" chúng tôi bỏ qua nó. Đó là "sử dụng xác thực smtp" có vẻ quan trọng.

Trả lời

1

Lớp SmtpClient nên sử dụng thông số xác thực mà không cần đọc rõ tên người dùng hoặc mật khẩu trong cấu hình. Xem http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx

Bạn có thể đăng phân đoạn System.Net từ cấu hình của mình không? Ngoài ra, bạn có thể đăng lỗi chính xác mà bạn đang nhận được từ máy chủ SMTP không?

25

Sự khác biệt giữa cách tiếp cận được mã hóa và địa chỉ web . chỉ cách tiếp cận là phương thức sau có số defaultCredentials="true" được đặt. Điều đó ngăn cản tên người dùng và mật khẩu không được sử dụng để xác thực, với cách tiếp cận đó. Tôi nghĩ rằng vấn đề sẽ được giải quyết bằng cách thiết lập để "sai" (hoặc loại bỏ nó hoàn toàn, bởi vì "sai" là mặc định).