2010-06-07 97 views
0

我必須使用C#發送郵件。我正確地遵循每一步,但無法使用下面的代碼發送郵件。任何人都可以幫我解決這個問題嗎?我知道這是一個老問題,我閱讀了該網站上的所有相關文章。但我無法解決我的問題。所以請幫我解決這個問題。錯誤是:Failure sending mail。我用System.Net.Mail來做到這一點。使用C#發送郵件

using System.Net.Mail; 

string mailTo = emailTextBox.Text; 
string messageFrom = "[email protected]"; 
string mailSubject = subjectTextBox.Text; 
string messageBody = messageRichTextBox.Text; 
string smtpAddress = "mail.abc.com"; 
int smtpPort = 25; 
string accountName = "[email protected]"; 
string accountPassword = "123"; 

MailMessage message = new MailMessage(messageFrom, mailTo);        
message.Subject = mailSubject; 
message.SubjectEncoding = System.Text.Encoding.UTF8; 
message.Body = messageBody; 
message.BodyEncoding = System.Text.Encoding.UTF8;    
SmtpClient objSmtp = new SmtpClient(smtpAddress, smtpPort); 
objSmtp.UseDefaultCredentials = false; 
NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential(accountName, accountPassword); 
objSmtp.Credentials = basicAuthenticationInfo; 
objSmtp.Send(message);         
MessageBox.Show("Mail send properly"); 
+0

SMTP服務器是否正在運行? – 2010-06-07 12:53:03

+0

yes.no smtp問題,我確定。 – riad 2010-06-07 12:53:40

回答

2

如果目標郵件服務器是IIS SMTP(或其他任何其他)服務器,那麼您必須檢查該服務器上的中繼限制。

通常,您必須將郵件服務器配置爲接受來自機器名稱(如果位於Active Directory中)或IP地址的傳入中繼。要麼這樣,要麼你可以讓它成爲一個開放中繼 - 但如果它是公共郵件服務器,那麼不推薦這樣做,因爲你很快就會有垃圾郵件發送者通過它進行中繼。

您可能也可以配置服務器接受來自特定身份的中繼消息 - 如果這是網站代碼,這意味着您很可能必須將網站配置爲以域用戶身份運行,以便NetworkCredentials正確發送。

+0

thanks.But你覺得是他們和代碼問題? – riad 2010-06-07 12:55:52

+0

如果這是一箇中繼問題,那麼代碼沒有問題,但設計 – 2010-06-07 13:00:10

1

哦朋友...我得到了解決方案。

只是我使用了端口26.現在郵件發送正常。

int smtpPort = 26; 

反正感謝佐爾坦

里亞德。