2010-06-07 82 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; 

反正感谢佐尔坦

里亚德。