【问题标题】:Sending Sparkpost smtp Email using c#使用 c# 发送 Sparkpost smtp 电子邮件
【发布时间】:2019-01-09 06:18:50
【问题描述】:

我在堆栈溢出和其他地方查看了许多答案,但我仍然找不到一个很好的例子来说明如何:

在 C# 中,在引入 STARTTLS 后通过 sparkpost smtp 成功发送电子邮件。 Sparkpost 中的文档(https://www.sparkpost.com/docs/getting-started/getting-started-sparkpost/,搜索 starttls)指的是以下设置:

SMTP 主机:smtp.sparkpostmail.com 端口:587 或 2525 加密:STARTTLS 用户名:SMTP_Injection 密码:

在我当前的应用程序中,在 web.config 中,我像这样配置 sparkpost smtp:

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

直到 7 月初,这一切都很好。然后不再支持 TLS 1.0。所以我想让我们的电子邮件再次正常工作

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

【问题讨论】:

  • "但是 STARTTLS 是如何发挥作用的?" - 这是触发 TLS 协商的 SMTP 命令。 AFAICS 不会影响协商的版本 - 这取决于您在 Windows 中启用的版本。
  • 是的。我知道我可以从文档中看到这一点。但是我该如何解决这个代码。我无论如何都找不到解决方案。这就是我发布此请求的原因。我愿意,显然想使用 1.1 版。或更新。
  • 理想情况下,我想将 STARTTLS 的命令添加到 web.config。有什么线索吗?或者这是通过其他方式解决的?代码?
  • 我想你已经有了?您向我们展示了&lt;network enableSsl="true"&gt;Here's the documentation for that: "在这种模式下,SMTP 会话在未加密的通道上开始,然后客户端向服务器发出 STARTTLS 命令以切换到使用 SSL 的安全通信。"
  • 我认为您需要配置 .NET 将协商的 TLS 版本。这里有一些老问题:stackoverflow.com/q/45382254/243245stackoverflow.com/q/28286086/243245

标签: email smtp starttls sparkpost


【解决方案1】:

我将 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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多