Email 使用c发送Sparkpost smtp电子邮件#

Email 使用c发送Sparkpost smtp电子邮件#,email,smtp,starttls,sparkpost,Email,Smtp,Starttls,Sparkpost,我已经在stack overflow和其他地方查看了许多答案,但仍然找不到一个关于如何: 在C#中,在引入STARTTLS后,通过sparkpost smtp成功发送电子邮件。Sparkpost(,搜索starttls)中的文档涉及以下设置: SMTP主机:SMTP.sparkpostmail.com 港口:587或2525 加密:STARTTLS 用户名:SMTP\u 密码: 在我当前的应用程序中,我在web.config中配置sparkpost smtp,如下所示: <

我已经在stack overflow和其他地方查看了许多答案,但仍然找不到一个关于如何:

在C#中,在引入STARTTLS后,通过sparkpost smtp成功发送电子邮件。Sparkpost(,搜索starttls)中的文档涉及以下设置:

SMTP主机:SMTP.sparkpostmail.com 港口:587或2525 加密:STARTTLS 用户名:SMTP\u 密码:

在我当前的应用程序中,我在web.config中配置sparkpost smtp,如下所示:

        <network host="smtp.sparkpostmail.com" port="587" userName="SMTP_Injection" password="..." enableSsl="true" />

直到7月初,这一切都很顺利。然后TLS1.0就不再受支持了。所以我想让我们的电子邮件重新工作


但是STARTTLS是如何发挥作用的呢?

我将ServicePointManager.SecurityProtocol行添加到我的smtp C#代码中,然后它又开始工作了。希望这有帮助

SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.sparkpostmail.com";
smtp.Port =  587; // 2525
smtp.EnableSsl = true;
//NOTE THE LINE BELOW
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
smtp.Credentials = new NetworkCredential("SMTP_Injection", "YOURKEY");

“但是STARTTLS是如何发挥作用的?”-这是触发TLS协商的SMTP命令。AFAICS,它不会影响协商的版本-这取决于您在Windows中启用的版本。是的。我知道我可以从文档中看到这一点。但我如何以代码方式解决这个问题。我无论如何也找不到解决这个问题的办法。这就是我发布这个请求的原因。我当然想用1.1版。或者更新。理想情况下,我希望将STARTTLS命令添加到web.config。有什么线索吗?或者这是通过其他方式解决的?代码?我想你已经有了?您向我们展示了
:“在此模式下,SMTP会话在未加密的通道上开始,然后客户端向服务器发出STARTTLS命令,以切换到使用SSL的安全通信。”我认为您需要配置.NET将协商的TLS版本。这里有一些老问题: