我将.NET Framework REST API项目迁移到新服务器和新域。以前和新服务器上的操作系统都是Windows Server 2016.我使用的是基于SSL / TLS的gmail smtp服务器。相关端口在AWS中打开(我迁移到的位置)。
我可以使用powershell手动发送电子邮件,但在调用API时,没有任何反应。相同的smtp配置在旧服务器上运行 - 所以这部分很好。
对于Windows服务器和/或.NET,我有点无能为力,我可能错过了一些明显的东西。例如,我不确定在使用gmail smtp时是否需要在IIS上设置SMTP服务器。
更新:
按照@TheEdge建议,我查看了事件日志,看起来我正在收到审计失败。但是我无法理解它。
An account failed to log on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Type: 3
Account For Which Logon Failed:
Security ID: NULL SID
Account Name: USER4
Account Domain:
Failure Information:
Failure Reason: Unknown user name or bad password.
Status: 0xC000006D
Sub Status: 0xC0000064
Process Information:
Caller Process ID: 0x0
Caller Process Name: -
Network Information:
Workstation Name: -
Source Network Address: __.___.___.___
Source Port: 0
Detailed Authentication Information:
Logon Process: NtLmSsp
Authentication Package: NTLM
Transited Services: -
Package Name (NTLM only): -
Key Length:
通过SMTP发送电子邮件的“事物”是您必须查看的地方。因此,如果您提供实际执行SMTP发送的代码,那么最好。因为您使用Google发送电子邮件,所以您无需在IIS中设置任何内容即可实现此功能。
我的猜测是,从IIS内部的API发送电子邮件时,您有权限问题。您是否查看了事件日志以查看其中是否有任何消息,或者应用程序是否发出异常等日志记录?
为了快速诊断任何网络问题,我建议您查看how to configure network tracing in .NET,然后查看其中的任何错误消息。该日志将告诉您应用程序是否在将其从网络中删除和/或连接到Google时遇到问题。