2012-01-16 42 views
0

我創建從服務器的IP,而不是SMTP發送電子郵件地址的電子郵件客戶端,我寫的代碼:SMTP:錯誤中繼

SmtpClient server = new SmtpClient("50.23.128.66"); 
MailMessage msg = new MailMessage("[email protected]", "[email protected]", "subject", "body"); 
server.Send(msg); 

但是當我運行它,我得到這個錯誤:

Unhandled Exception: System.Net.Mail.SmtpFailedRecipientException: Mailbox unavailable. The server response was: 5.7.1 Relaying Denied. at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressColl ection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)

*順便說一句,我使用的Windows Server 2008 * 和我配置的SMTP服務器localhost和端口25,但我不`噸知道的是,依賴錯誤。

+0

當您通過「bar.com」SMTP服務器發送「someone @ foo.com」電子郵件時,您使用'bar.com'服務器作爲郵件中繼。如果bar.com服務器未配置爲中繼郵件,它將拒絕不屬於其自己域或其用戶的SMTP嘗試。換句話說,這不是一個編程錯誤,而是一個服務器錯誤,你應該檢查服務器配置。也許更適合於serverfault.com。 – 2012-01-16 18:59:43

回答

1

中繼是SMTP服務器用於驗證它應該路由來自特定發件人的電子郵件的方法。 「開放中繼」意味着沒有認證,並且SMTP服務器將發送任何人發送的電子郵件。這不是一種好的做法,並且可能會在此特定SMTP服務器上進行身份驗證,例如用戶名和密碼,甚至發件人的IP地址。請諮詢SMTP服務器的管理員以瞭解需要什麼。我想至少你需要設置用戶名和密碼,而你在代碼示例中沒有這樣做。

3

如果您使用localhost來依賴電子郵件,則應該使用127.0.0.1或localhost,而不是您在代碼中發佈的ip地址。

+0

是的,但我有3 ips在該服務器上,我想在發送電子郵件時切換ips,這樣我就不會成爲垃圾郵件發送者 – 2012-01-16 19:08:24

+2

誰說,通過切換ips你不會被標記爲垃圾郵件發送者?比這更復雜。 – Icarus 2012-01-16 19:12:49