我有一个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],并且未发送电子邮件。这是不是在服务器上设置的东西而不是导致我的问题的程序(服务器配置不是我的强区)。
感谢。
答案 0 :(得分:0)
您的程序失败的服务器上是否有运行的电子邮件服务器?您正尝试向localhost
(即执行程序的计算机)发送电子邮件。如果SMTP端口25在该计算机上没有响应,则不会传递电子邮件。
对于emailServer
,您必须提供网络中能够接受和处理电子邮件的计算机的主机名。通常,您不会使用localhost
作为该计算机的名称。