2009-10-21 91 views
0

我試着從一個asp.net腳本發送郵件,但即時得到這個錯誤:ASP.NET:發送郵件

System.Net.Mail.SmtpFailedRecipientException:郵箱不可用。服務器響應是:4.1.8:發件人地址被拒絕:在System.Net.Mail.SmtpTransport.SendMail(MailAddress發件人,MailAddressCollection收件人,String deliveryNotify,SmtpFailedRecipientException異常)找不到域Domain.Net.Mail.SmtpClient.Send在Clematis_ADO.sites.Kvittering.Page_Load(對象發件人,EventArgs e)項(消息MAILMESSAGE)

按照我的理解這一點,就不能使用我指定的SMTP服務器,但使用SMTP服務器通過給IM我虛擬主機提供商。那麼錯誤是什麼?

這是在虛擬主機上測試的,而不是本地主機。

並使用此代碼IM:

try 
     { 
      StringWriter sw = new StringWriter(); 
      HtmlTextWriter w = new HtmlTextWriter(sw); 
      OrderConfirmationContainer.RenderControl(w); 
      string s = sw.GetStringBuilder().ToString(); 

      MailMessage mail = new MailMessage(); 

      string emailSubject = "Testing"; 

      mail.To.Add(new MailAddress(order.getFname() + " " + order.getLname() + "<"+order.getEmail()+">")); 
      mail.Sender = new MailAddress("****** <***@***.com>"); 
      mail.From = new MailAddress("***@***.com"); 
      mail.Subject = emailSubject; 
      mail.IsBodyHtml = true; 
      mail.Body = "<h3>" + emailSubject + "</h3>" + s; 

      SmtpClient smtp = new SmtpClient(); 
      smtp.Host = "mailoutb1.surf-town.net"; 
      smtp.Send(mail); 

     } 
     catch (Exception exception) 
     { 
      if(exception != null) 
       MailLabel.Text = "Mail fejlen er: " + exception.ToString(); 
     } 

回答

2

您收到的錯誤似乎是因爲SMTP服務器實際上是拒絕電子郵件,因爲您嘗試發送或發送的域名是錯誤的或被列入黑名單。

您是使用假電子郵件地址進行測試還是真實電子郵件地址(請告訴我您並非真的想要發送電子郵件到****@****.com或從中發送郵件)?如果它是真實的,你可能必須打電話給你的ISP,看看他們正在使用什麼黑名單,看看你試圖發送到的域是否被列入黑名單。

1

我知道有些主機商鎖定他們的SMTP服務器只允許郵件時的「發件人」是域中有效的郵箱發送。您的mail.sender值是否爲有效郵箱?

0

如果您想同時提供地址和顯示名稱,則使用constructor that takes two parameters更容易,而不是自己將這兩者結合在一起。

mail.To.Add(new MailAddress(order.getEmail(), order.getFname() + " " + order.getLname())); 

我知道這並不能解決您的問題,但我想我會提及它。

0

有點必要的背景: SMTP服務器按設計「中繼」消息,即你發送一條消息到SMTP服務器,它看到它是否爲「本地」收件人,如果不是它轉發到另一臺服務器交付(由MX記錄等確定)。

不幸的是,這使得(以及取得)的東西容易爲垃圾郵件發送者所以現在的SMTP服務器往往會被鎖定,使下列條件之一必須滿足:

  1. 該消息是一個已知/本地收件人
  2. 發件人計算機與SMTP服務器在同一網絡上(爲了討論的緣故)或
  3. 發件人以某種方式進行了身份驗證(用戶名/密碼或類似)。

有些甚至更挑剔,並要求他們知道發送(「發件人」)域。

以上所有原因是,您所看到的錯誤基本上與我的提供商(服務器和託管服務提供商)看到的錯誤相同,如果我嘗試將郵件發送給第三方而無需先進行身份驗證(從一個我們的專用服務器或從電子郵件客戶端)。

如果您使用的是通用託管網站空間並且出現此錯誤,那麼您需要與主機(幫助頁面,知識庫等)進行覈對,以瞭解他們希望您能夠如何從應用程序發送電子郵件。

似乎在SmtpClient中設置證書的範圍,但我沒有發現這個必要,所以不能幫助很多細節。