2010-04-01 71 views
1

我有我的代码在这里,它从我的家庭,我的用户是管理员,我通过有线网络连接到互联网正常工作。 但是,问题是,当我从我的工作场所尝试此代码时,它不起作用。显示错误: “无法连接到远程服务器” 从不同的机器在同一网络中: “A套接字操作试图无法访问网络209.xxx.xx.52:25”不能从网络使用C#,asp.net网站发送smtp电子邮件

我检查与我们的网络管理员,他向我保证,所有的邮件端口是开放的[25,110,和其他端口的Gmail]。

然后,我用管理员权限登录,有一点改进,它没有显示任何错误,但实际的电子邮件从未收到。

请注意,该代码是从开发环境中测试,Visual Studio 2005和2008年

任何建议将不胜感激。 在此先感谢

try 
    { 
     MailMessage mail_message = new MailMessage("[email protected]", txtToEmail.Text, txtSubject.Text, txtBody.Text); 
     SmtpClient mail_client = new SmtpClient("SMTP.y7mail.com"); 
     NetworkCredential Authentic = new NetworkCredential("[email protected]", "xxxxx"); 
     mail_client.UseDefaultCredentials = true; 
     mail_client.Credentials = Authentic; 
     mail_message.IsBodyHtml = true; 
     mail_message.Priority = MailPriority.High; 
     try 
     { 
      mail_client.Send(mail_message); 
      lblStatus.Text = "Mail Sent Successfully"; 
     } 
     catch (Exception ex) 
     { 
      System.Diagnostics.Debug.WriteLine(ex.Message); 
      lblStatus.Text = "Mail Sending Failed\r\n" + ex.Message; 
     } 
    } 
    catch (Exception ex) 
    { 
     lblStatus.Text = "Mail Sending Failed\r\n" + ex.Message; 
    } 

回答

1

下面是一些示例代码,我和谈判工作,以一个Gmail服务器

private void SendEmail(string from, string to, string subject, string body) 
    { 
     MailMessage mail = new MailMessage(new MailAddress(from), new MailAddress(to)); 

     mail.Subject = subject; 
     mail.Body = body; 

     SmtpClient smtpMail = new SmtpClient("smtp.gmail.com"); 
     smtpMail.Port = 587; 
     smtpMail.EnableSsl = true; 
     smtpMail.Credentials = new NetworkCredential("[email protected]", "xxx"); 
     // and then send the mail 
     smtpMail.Send(mail); 
    } 
+0

谢谢。它也适用于我。不仅用于Gmail,也用于y7mail!这个港口587有什么特色吗? – Kaysar 2010-04-03 09:09:29

+0

使其工作的主要部分代码: MailMessage mail_message = new MailMessage(“[email protected]”,txtToEmail.Text,txtSubject.Text,txtMailBody.Text); SmtpClient mail_client =新的SmtpClient(“SMTP.y7mail.com”,587); NetworkCredential Authentic = new NetworkCredential(“[email protected]”,“xxx”); mail_client.UseDefaultCredentials = true; mail_client.Credentials = Authentic; – Kaysar 2010-04-03 09:11:04

+0

很高兴解决。端口587b是使用ESMTP(RFC2476)提交电子邮件的标准端口。 – 2010-04-03 15:38:36

1

尝试设置UseDefaultCredentials为false。

0
private void SendEmail(string from, string to, string subject, string body) 
    { 
     MailMessage mail = new MailMessage(new MailAddress(from), new MailAddress(to)); 

     mail.Subject = subject; 
     mail.Body = body; 

     SmtpClient smtpMail = new SmtpClient("smtp.gmail.com"); 
     smtpMail.Port = 587; 
     smtpMail.EnableSsl = true; 
     smtpMail.Credentials = new NetworkCredential("[email protected]", "xxx"); 
     // and then send the mail 
     smtpMail.Send(mail); 
    } 

这是System.Exception问题的最佳答案。完全验证,您需要在网络凭证上提供用户名和密码。也尝试将此解决方案提供给其他网站。