Windows服务无法通过SMTP服务发送电子邮件

时间:2019-07-11 17:00:27

标签: c# smtp windows-services smtpclient

我已经在C#中创建了Windows服务,但是SMTP电子邮件部分未按预期方式发送电子邮件。该服务连接到我们的数据库,进行拖网并带回要通过电子邮件发送的数据。该电子邮件是使用SmtpClient设置的。

该代码可以在不在服务范围内的测试平台上正常运行。凭据和SMTP客户端可与其他Web应用程序一起使用

  1. 该服务已正确安装:
  

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> installutil.exe   C:\ Sites \ ibas-email-service \ ibasEmailService.exe Microsoft(R).NET   框架安装实用程序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 =组装路径=   C:\ Sites \ ibas-email-service \ ibasEmailService.exe日志文件=   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 =组装路径=   C:\ Sites \ ibas-email-service \ ibasEmailService.exe日志文件=   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);
  1. 该服务最初是使用本地系统帐户安装的,这是服务的默认设置。

  2. 该服务运行,访问sql server db,获取数据,然后失败以发送电子邮件。

  3. 我知道程序可以正常工作,因为我将所有代码都放入了测试平台Web应用程序并收到了回信。 这证明了代码和凭据有效,从而使我的服务或SMTP服务都出现了权限问题。

  4. 我尝试使用运行服务: 本地系统帐户 本地服务帐户 网络服务帐户 wd-admin(这是服务器的管理员帐户)-在安装程序中创建了用户名/密码后:

this.serviceProcessInstaller1.Password = "*****************";
this.serviceProcessInstaller1.Username = "wd-admin";

,然后确保使用wd-admin启动服务。

所有这些衡量指标均无法正常运行,该服务无法访问SMTP服务。 事件查看器没有显示任何登录错误,我的代码也没有报告添加的Try / catch / throw结构中的任何错误。

问题:

  1. 据我所知SMTP服务运行正常,是否需要专门告诉它以允许域用户访问?
  2. 这是Azure措施吗? SMTP服务是非常基本的允许匿名访问的工具(其思想是在我们正确运行该服务后将其锁定)。

  3. 我已阅读stackoverflow,其中域用户应该能够允许访问,因为本地服务和系统帐户不允许访问网络服务。 如何告诉SMTP允许我的用户从其他服务访问?

  4. 不生成任何错误,并且除了“服务已启动/已停止”消息之外,Application Event Viewer均未显示任何错误或无法连接消息。

能收到任何帮助或指导。

0 个答案:

没有答案