c# - .NET Core MailKit SMTP AUTH LOGIN 作为本地 linux 帐户

标签 c# linux smtp postfix-mta mailkit

我使用 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/

相关文章:

c# - PHP 等价于 C# 中的锯齿状数组

c# - 播放前延迟音频

c# - 集合作为字典中的键

php - 获取目录的最后修改时间

java - 如何在 Mule ESB 上发送电子邮件

asp.net - 服务器响应为: 4. 3.2服务不可用,正在关闭传输 channel

c# - 如何正确更新对象列表?

java - C,打开相对于可执行文件路径的文件?

C++ 应用程序崩溃

java - JAVA发送邮件时出现空指针异常