我在Visual Studio 2012中工作,在Windows 7上,我在Windows Server 2008 R2计算机上运行程序,两者都是64位。我一直在许多进程中使用相同的代码,我一直工作得很好。但是,最近当我使用相同的代码时,我得到以下异常,
System.Net.Mail.SmtpException: Failure sending mail. --->
System.Net.WebException: Unable to connect to the remote server --->
System.Net.Sockets.SocketException: An attempt was made to access a socket
in a way forbidden by its access permissions xxx.xxx.xxx.xxx:25
代码,
public static void emailReport(string to, string from, string subject,
string body, string attachment, string hostAddress)
{
MailMessage mail = new MailMessage();
SmtpClient SmtpServer = new SmtpClient(hostAddress);
foreach (string email in to.Split(','))
mail.To.Add(new MailAddress(email));
mail.From = new MailAddress(from);
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
SmtpServer.Send(mail);
}
基本上从本周开始,使用此代码的任何新版本的应用程序(.exe)都不会发送电子邮件,但相同应用程序的旧版本会发送电子邮件。 我怀疑这是我正在运行流程的环境问题,或者我正在构建项目的方式。我不知道如何解决这个问题。
答案 0 :(得分:1)
我终于能够弄明白了。事实上,尽管流程在某些时候有效,但它实际上是一个防火墙问题。
防火墙具有阻止可疑文件名的某些条件。我需要将可执行文件重命名为不可疑的内容或更能反映它的作用(即“电子邮件”)