SMTP Gmail GeneralFailure — время ожидания операции истеклоC#

Место общения программистов C#
Anonymous
SMTP Gmail GeneralFailure — время ожидания операции истекло

Сообщение Anonymous »

Я пытаюсь создать службу Windows, которая запускается ежедневно для проверки конкретной проверки, если это правда, она отправит электронное письмо. Однако у меня возникла проблема со следующим SMTP-кодом.

Код: Выделить всё

using (SmtpClient smtpClient = new SmtpClient())
{
smtpClient.Host = ConfigurationManager.AppSettings["SmtpHost"];//smtp.gmail.com
smtpClient.Port = int.Parse(ConfigurationManager.AppSettings["SmtpPort"]);//587
smtpClient.EnableSsl = bool.Parse(ConfigurationManager.AppSettings["SmtpEnableSsl"]);//true
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new NetworkCredential(
ConfigurationManager.AppSettings["SmtpUsername"],
ConfigurationManager.AppSettings["SmtpPassword"]
);
smtpClient.Timeout = 30000;

string fromEmail = ConfigurationManager.AppSettings["EmailFromAddress"];

MailMessage message = new MailMessage
{
From = new MailAddress(fromEmail),
Subject = subject,
Body = emailBody,
IsBodyHtml = true,
BodyEncoding = Encoding.UTF8,
SubjectEncoding = Encoding.UTF8
};

message.To.Add(recipientEmail);
smtpClient.Send(message);
}
Когда я запускаю его в консольном приложении, он работает нормально. Но после развертывания его на сервере и попытки запустить его как службу Windows я продолжаю получать эту ошибку:

GeneralFailure — время ожидания операции истекло

в этой строке кода:

Код: Выделить всё

smtpClient.Send(message);
Я проверил, есть ли у сервера соединение с smtp.gmail.com через порт 587, используя следующую команду в PowerShell:

Код: Выделить всё

Test-NetConnection -ComputerName smtp.gmail.com -Port 587
Изображение

Кроме того, я попробовал запустить службу, используя учетные записи как локальной системы, так и сетевой службы. Я также пытался запустить .exe вручную и использовал команду runas для запуска .exe, но все равно получаю ту же ошибку.

Вернуться в «C#»