我使用 MailKit 库从 ASP.NET Core 应用程序发送邮件。我还尝试避免使用 MailKit 库并直接使用 TcpClient 向 SMTP 服务器发送命令(以确保库没有问题)。 Postfix SMTP 服务器位于同时托管 Web 应用程序的 Linux Ubuntu 18.04 服务器上。
当我在本地(在 Windows 机器上)测试应用程序时,MailKit 成功验证并且正在发送电子邮件。但是,当我在 Linux 上运行应用程序时,Ubuntu 身份验证失败(相同的服务器、端口、用户名和密码)。当我检查与服务器的通信日志时,问题很明显 - 当应用程序在 Linux 服务器上运行时,应用程序将 root 用户作为用户名发送到 SMTP 服务器。我没有将其指定为要发送的用户名。
Postfix 是否有任何自动规则来验证用户?是否需要任何额外的 Postfix 配置?
(我已经更改了原来的用户名和密码)。
Windows 服务器 ...
C: AUTH LOGIN
S: 334 VXNlcm5hbWU6
C: dGVzdEB0ZXN0LmNvbQ==
S: 334 UGFzc3dvcmQ6
C: dGVzdHBhc3N3b3JkCg==
S: 235 2.7.0 Authentication successful
Linux Ubuntu 服务器 ...
C: AUTH LOGIN
S: 334 VXNlcm5hbWU6
C: cm9vdA==
S: 334 UGFzc3dvcmQ6
C: dGVzdHBhc3N3b3JkCg==
S: 535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
最佳答案
您一定是以某种方式将错误的用户名字符串传递给 MailKit,因为 MailKit 只使用您提供给它的任何字符串作为用户名字符串。它没有任何逻辑来尝试获取系统用户名或类似的东西。
您是否正在使用 CredentialCache.DefaultCredentials
?例如:
client.Authenticate (CredentialCache.DefaultCredentials);
如果是这样,那就是问题所在(与 MailKit 无关)。
关于c# - .NET Core MailKit SMTP AUTH LOGIN 作为本地 linux 帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53020955/