在服务器上运行程序时发生邮件异常?

时间:2012-01-20 11:30:42

标签: c# windows-services smtp

我有一个C#服务检查程序。 exe从bat文件中启动,该文件也传递了许多参数(例如,您要检查多少服务的int计数,服务显示名称的字符串)以及emailTo,emailFrom,emailServer等,就好像是服务未运行将发送电子邮件。这是电子邮件部分的代码:

MailMessage mail = new MailMessage(emailFrom, emailTo);
SmtpClient SMTP = new SmtpClient(emailServer);
if (emailUser != "")
{
    SMTP.Credentials = new NetworkCredential(emailUser, emailPass);
}
mail.Subject = "The " + service + " service has stopped running";
mail.Body = "Please take a look into the " + 
            service + " service and think about restarting.";

SMTP.Send(mail);

所以在一台服务器上我使用emailServer作为“localhost”传入,在bat文件中,当它运行时,如果我正在检查的服务没有运行,那么电子邮件发送正常,一切正常。但是在另一台服务器上,我再次使用“localhost”作为我的emailServer,但是当我运行bat文件时。我收到错误System.Net.Mail.Smtp.Exception [8012],并且未发送电子邮件。这是不是在服务器上设置的东西而不是导致我的问题的程序(服务器配置不是我的强区)。

感谢。

1 个答案:

答案 0 :(得分:0)

您的程序失败的服务器上是否有运行的电子邮件服务器?您正尝试向localhost(即执行程序的计算机)发送电子邮件。如果SMTP端口25在该计算机上没有响应,则不会传递电子邮件。

对于emailServer,您必须提供网络中能够接受和处理电子邮件的计算机的主机名。通常,您不会使用localhost作为该计算机的名称。