【问题标题】:Does Mailkit supports sending anonymous emails?Mailkit 是否支持发送匿名电子邮件?
【发布时间】:2021-06-16 21:55:58
【问题描述】:

我尝试从中发送电子邮件的 Exchange 主机不需要身份验证。过去我使用 SmtpClient 类成功地实现了这一点,但由于微软推荐 Mailkit,我更喜欢这个。

Mailkit 是否总是需要用户名和密码才能连接?我一直在到处寻找答案,但似乎找不到答案。

这是我目前的代码:

        private void Send(MimeMessage message)
        {
            using (var client = new SmtpClient(new ProtocolLogger(Console.OpenStandardOutput())))
            {
            client.Connect(Host, Port, SecureSocketOptions.None);             

            client.Send(message);
            client.Disconnect(true);
            }
        }

当然我得到一个错误:5.7.1 客户端未通过身份验证

谢谢你。

【问题讨论】:

  • 该错误是否显示为异常?
  • does not require authentication 显然不是。这是服务器错误,而不是 MailKit 错误。 Exchange确实需要身份验证。没有理智的管理员会禁用身份验证,从而允许垃圾邮件发送者使用邮件服务器。默认为 Windows 身份验证,不需要任何凭据 - 使用执行帐户的身份建立与服务器的连接
  • @PanagiotisKanavos 服务器允许匿名电子邮件发送
  • @mason 我想是的。我只能在我的网页上看到消息,因为我无法在开发环境中测试电子邮件。
  • @PanagiotisKanavos 与有能力、专注于安全的 IT 人员一起工作一定是多么美好!我遇到了相当多的 Exchange 服务器,它们在内部访问时具有 SMTP 而无需身份验证。

标签: c# exchange-server mailkit


【解决方案1】:

Mailkit 是否总是需要用户名和密码才能连接?我一直在到处寻找答案,但似乎找不到答案。

MailKit 不需要身份验证 - 这取决于服务器是否需要它。

如果服务器不需要身份验证,您的代码只需要不调用 client.Authenticate()(或 AuthenticateAsync,如果您使用的是异步代码),就像您在示例代码 sn-p 中尝试做的那样。

5.7.1 client was not authenticated 是您尝试发送邮件时来自您的 SMTP 服务器的错误,并建议您的 SMTP 服务器配置为需要身份验证。

MailKit 抛出的异常消息都不是以错误代码字符串开头(5.7.1 是 SMTP 错误代码),因此如果抛出以 SMTP 错误代码字符串开头的异常,则表示它来自服务器.

【讨论】:

  • 谢谢@jstedfast。服务器确实要求进行身份验证。现在全部排序。
猜你喜欢
  • 2012-02-15
  • 1970-01-01
  • 2021-03-13
  • 2014-01-21
  • 1970-01-01
  • 2023-03-18
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多