Ral*_*tru 2 c# exchange-server mailkit
我尝试发送电子邮件的 Exchange 主机不需要身份验证。过去我已经使用 SmtpClient 类成功实现了这一目标,但由于 Microsoft 推荐 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);
}
}
Run Code Online (Sandbox Code Playgroud)
当然,我收到错误:5.7.1 客户端未经过身份验证
谢谢你。
Mailkit 是否始终需要用户名和密码才能连接?我一直在到处寻找答案,但似乎找不到。
MailKit 不需要身份验证 - 这取决于服务器是否需要身份验证。
如果服务器不需要身份验证,您的代码只需不要调用client.Authenticate()(如果您使用异步代码,则不需要调用 AuthenticateAsync),就像您在示例代码片段中尝试执行的操作一样。
5.7.1 client was not authenticated是当您尝试发送邮件时来自 SMTP 服务器的错误,表明您的 SMTP 服务器已配置为需要身份验证。
MailKit 抛出的异常消息都不以错误代码字符串开头(5.7.1 是 SMTP 错误代码),因此如果抛出以 SMTP 错误代码字符串开头的异常,则表示它来自服务器。