Я создал службу Windows в C #, но часть электронной почты SMTP НЕ отправляет электронную почту, как следует.Служба подключается к нашей базе данных, выполняет траление и возвращает данные для отправки по электронной почте.Электронная почта настроена с использованием SmtpClient.
Код работает нормально на тестовом стенде, который НЕ находится в сервисе.Учетные данные и SMTP-клиент работают с другими веб-приложениями
- Служба устанавливается правильно:
C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> installutil.exe C: \ Sites \ ibas-email-service \ ibasEmailService.exe Microsoft (R) .NET Framework Утилита установки Версия 4.7.3062.0 Авторские права (C) Корпорация Майкрософт.Все права защищены.Запуск транзакционной установки.
Начало фазы установки установки.См. Содержимое файла журнала для выполнения сборки C: \ Sites \ ibas-email-service \ ibasEmailService.exe.Файл находится по адресу C: \ Sites \ ibas-email-service \ ibasEmailService.InstallLog.Установка сборки "C: \ Sites \ ibas-email-service \ ibasEmailService.exe".Затрагиваемые параметры: logtoconsole = assemblypath = C: \ Sites \ ibas-email-service \ ibasEmailService.exe logfile = C: \ Sites \ ibas-email-service \ ibasEmailService.InstallLog Установка службы IbasEmailService ... Служба IbasEmailService успешно установлена,Создание источника EventLog IbasEmailService в журнале приложения ...
Фаза установки успешно завершена, и фаза фиксации начинается.См. Содержимое файла журнала для выполнения сборки C: \ Sites \ ibas-email-service \ ibasEmailService.exe.Файл находится по адресу C: \ Sites \ ibas-email-service \ ibasEmailService.InstallLog.Фиксация сборки 'C: \ Sites \ ibas-email-service \ ibasEmailService.exe'.Затрагиваемые параметры: logtoconsole = assemblypath = C: \ Sites \ ibas-email-service \ ibasEmailService.exe logfile = C: \ Sites \ ibas-email-service \ ibasEmailService.InstallLog
Фаза фиксации успешно завершена.
Транзакционная установка завершена.
Это основной код SMTP (учетные данные выделены)
MailMessage mailMsg = new MailMessage();
mailMsg.To.Add(new MailAddress(to));
mailMsg.From = new MailAddress(from, "MyApp");
mailMsg.Subject = subject;
mailMsg.Body = message;
mailMsg.IsBodyHtml = true;
SmtpClient smtpClient = new SmtpClient("smtp.sendgrid.net", Convert.ToInt32(587));
smtpClient.UseDefaultCredentials = false;
NetworkCredential
credentials = new NetworkCredential("-------", "-----");
// note credentials are correct in code
smtpClient.Credentials = credentials;
smtpClient.Send(mailMsg);
Служба была изначально установлена с использованием локальной системной учетной записи, которая является службой по умолчанию для служб.
Служба запускается, получает доступ к базе данных sql server, выбирает данные изатем не удается отправить электронное письмо.
Я знаю, что программа работает, поскольку я помещаю весь код в веб-приложение для тестирования и получаю электронные письма обратно.Это доказывает работу кода и учетных данных, что оставляет проблему с разрешениями либо для моей службы, либо для службы SMTP.
Я попытался запустить свою службу с использованием: Учетная запись локальной системы Учетная запись локальной службы Сетевая службаучетная запись wd-admin (это наша учетная запись администратора для сервера) - после создания имени пользователя / пароля в установщике:
this.serviceProcessInstaller1.Password = "*****************";
this.serviceProcessInstaller1.Username = "wd-admin";
и затем убедитесь, что wd-admin использовался длязапустите службу.
Ни один из этих показателей не сработал, службе не удалось получить доступ к службе SMTP.Средство просмотра событий не показывало ошибок входа в систему, и мой код не сообщал об ошибках в добавленных строках Try / catch / throw.
Вопросы:
- Как я знаю, служба SMTPработает правильно, мне нужно указать это специально, чтобы разрешить доступ пользователю домена?
Это мера Azure?Служба SMTP очень проста, позволяя анонимный доступ (идея состоит в том, чтобы заблокировать его, как только мы правильно запустим службу).
Я прочитал на stackoverflow, что пользователь домена должен иметь возможностьразрешить доступ, так как локальная служба и системные учетные записи не разрешают доступ к сетевым службам.Как мне указать SMTP, чтобы разрешить моему пользователю доступ из другой службы?
Никаких ошибок не возникает, и кроме сообщений «Запуск / остановка службы», Просмотр событий приложений не показывает ошибок или Невозможно подключиться.
Любая помощь или руководство с благодарностью принимаются.