У меня есть программа, которую я хочу запустить на сервере, который может отслеживать различные серверы в сети и отправлять уведомления по электронной почте при возникновении определенных ситуаций, связанных с этими серверами.
В настоящее время я могу запустить эту программу на своем локальном компьютере и отключить электронные письма (используя SMTP gmail). Однако, когда я пытаюсь запустить его на сервере через командную строку, выдается следующее исключение:
Unhandled Exception: System.Net.Mail.SmtpException: Failure sending mail. --->
System.Net.WebException: Unable to connect to the remote server --->
System.Net.Sockets.SocketException: A connection attempt failed
because the connected party did not properly respond after a period of time,
or established connection failed because connected host has failed to respond
xxx.xxx.xxx.xxx:587
Код, связанный с отправкой электронного письма, довольно прост:
static void sendEmail(MailAddressCollection mailCollection, string emailSender,
string emailDisplayName, string emailPassword,
string subject, string body) {
MailAddress fromAddress = new MailAddress(emailSender, emailDisplayName);
SmtpClient smtpClient = new SmtpClient {
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, emailPassword)
};
MailMessage message = new MailMessage {
From = fromAddress,
Subject = subject,
Body = body
};
foreach (MailAddress mailAddress in mailCollection) {
message.To.Add(mailAddress);
}
smtpClient.Send(message);
}
Рассматриваемый сервер представляет собой коробку 2008R2, и на нем не включен брандмауэр Windows. Кроме того, порт 25 определенно открыт, так как этот сервер может отправлять электронные письма других типов (в частности, созданные почтовым маршрутизатором Dynamics CRM).
Что может быть причиной этой ошибки?