2013-02-25 53 views
2

我有一個webform,有人可以設置一個帳戶 - 我想給他們發送電子郵件確認。如何從我的C#codebehind發送電子郵件 - 獲取System.Net.Mail.SmtpFailedRecipientException

我正在使用的代碼:

 // Create e-mail message 
     MailMessage mm = new MailMessage(); 
     mm.From = new MailAddress("[email protected]", "Our Organisation"); 
     mm.To.Add(new MailAddress("[email protected]", "Web User")); 

     mm.Subject = "Confirmation"; 
     mm.Body = "You are now registered test"; 
     mm.IsBodyHtml = true; 

     // Send e-mail 
     sc = new SmtpClient(); 

     NetworkCredential basicAuthenticationInfo = new NetworkCredential(「[email protected]」, 「ourorganisationemailPassword」); 
     sc.Credentials = basicAuthenticationInfo; 
     sc.UseDefaultCredentials = false; 

     sc.Send(mm); 

的web.config:

<system.net> 
    <mailSettings> 
    <smtp> 
     <network host="[email protected]" port="9999" userName="[email protected]" password="OurOrganisationEmailPassword"/> 
    </smtp> 
    </mailSettings> 
</system.net> 

但得到:

System.Net.Mail.SmtpFailedRecipientException was caught 
HResult=-2146233088 
Message=Mailbox unavailable. The server response was: Authentication is required for relay 
Source=System 
FailedRecipient=<[email protected]> 

看起來像它希望爲網絡用戶登錄信息我想寄給的地址。我怎樣才能修改這個併發送這樣的確認電子郵件,比如所有其他商業公司都這麼做?

+0

在的NetworkCredential,你有沒有嘗試使用真實的用戶名,而不是用戶的電子郵件?即「OurOrganisationEmail」。 (你也應該使用代碼或配置,但不能同時使用) – Fabske 2013-02-25 14:02:48

回答

0

我猜這是因爲您的網站沒有在域帳戶下運行。許多郵件服務器不允許匿名用戶發送電子郵件。

您可以嘗試創建位於域中的服務帳戶,並將應用程序池設置爲在該服務帳戶下運行。

1

你的客戶端代碼看起來不錯,問題可能出在web.config

host="[email protected]" 

這是一個email address,不是一個有效的hostname 它應該是這樣的:

host="mail.ourdomain.com" 

你有沒有測試,如果smtp server的作品? 只需使用telnet進行一些基本測試。 http://technet.microsoft.com/en-us/library/aa995718(v=exchg.65).aspx

此外,檢查這篇文章,瞭解更多信息 Send Email via C# through Google Apps account

5

OK - 得到它的工作。以下是工作編碼;看起來像我配置NetworkCredential對象是問題。感謝所有人,儘管在幫助我達成解決方案方面給予了幫助。

 MailAddress fromAddress = new MailAddress("[email protected]","Our Organisation");//"[email protected]"; 
     MailAddress toAddress = new MailAddress("[email protected]", "Web User"); //"[email protected]"; 

     //Create the MailMessage instance 
     MailMessage myMailMessage = new MailMessage(fromAddress, toAddress); 

     //Assign the MailMessage's properties 
     myMailMessage.Subject = "Confirmation"; 
     myMailMessage.Body = "You are now registered test"; 
     myMailMessage.IsBodyHtml = true; 

     //Create the SmtpClient object 
     SmtpClient smtp = new SmtpClient(); 

     //Send the MailMessage (will use the Web.config settings) 
     smtp.Send(myMailMessage); 

的web.config

<system.net> 
    <mailSettings> 
    <smtp> 
    <network host="mail.ourdomain.com" port="9999" userName="[email protected]" password="OurOrganisationEmailPassword"/> 
    </smtp> 
    </mailSettings> 
</system.net> 
相關問題