gpt4 book ai didi

c# - 如何检查收件人电子邮件地址域是否已实现 TLS?

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:59 25 4
gpt4 key购买 nike

我们正在尝试检查收件人电子邮件 ID(给定电子邮件 ID 的域)是否已实现 TLS。如果未实现,我们将无法发送电子邮件。在 C# 中有什么方法可以检查它吗?例如以下是我们可以输入任何电子邮件 ID 的服务,它会告诉我们该电子邮件域是否已实现 TLS。 https://www.checktls.com/TestReceiver如何在 C# 中执行此操作? C# 电子邮件客户端带有属性 smtpClient.EnableSsl = true;问题是如果在接收方未实现 TLS 会发生什么情况?它会失败还是会通过?如果它失败了,那就是我们想要的。我们的 SMTP 服务器已实现 TLS。

我从 telnet 尝试了 STARTTLS 命令和 EHLO。它给出 250 STARTTLS,这告诉我目标服务器已实现 TLS。如何以编程方式进行?

smtpClient.EnableSsl = true;

最佳答案

如果您使用类似 MailKit 的库,你可以这样做:

bool supportsStartTls;

using (var client = new SmtpClient ()) {
client.Connect ("smtp.host.com", 587, SecureSocketOptions.None);
supportsStartTls = client.Capabilities.HasFlag (SmtpCapabilities.StartTls);
client.Disconnect (true);
}

如果您想使用 MailKit 发送邮件,您可以完全控制在 STARTTLS 不可用时发生的情况。

例如,如果您希望它在不支持 STARTTLS 时失败,则使用 SecureSocketOptions.StartTls 作为 Connect 方法的第三个参数。

如果您希望 MailKit 在可用时使用 STARTTLS 但在不可用时不失败,请改用 SecureSocketOptions.StartTlsWhenAvailable

关于c# - 如何检查收件人电子邮件地址域是否已实现 TLS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56403595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com