0

我们有一个可以使用 TLS 发送电子邮件的系统。但是,如果目的地支持 TLS,我们只想发送带有附件的完整电子邮件。如果它不支持 TLS,我们会发送不带附件的不同消息。

我们过去只是尝试使用 TLS 发送并等待接收方“失败”返回给我们,然后发送备份消息。最近,我们切换到通过 Frontbridge 中继所有传出消息。但是,如果可以,Frontbridge 将使用 TLS 发送消息,如果不能,则不使用。我们失去了基于 TLS 支持自定义消息的能力。

问题是这样的:在 .NET C# Web 应用程序中,如何在发送任何内容之前判断目标是否支持 TLS?这样我们就可以在通过 Frontbridge 转发消息之前自定义消息。

我需要能够以编程方式执行此操作,但我不想将整个库添加到我们的解决方案(如 Minimalistic Telnet),因为我们不需要完整的 telnet 功能......我只需要 ping 到服务器并询问它支持什么!

可以简单地使用 System.Net.Sockets 的东西来完成吗?

谢谢,凯文

4

1 回答 1

0

是的,您需要编写 SMTP 协议的一部分。

对于显式 TLS 模式:您连接、接收和发送数据,然后发送 STARTTLS 命令并查看响应是否为 220。然后您应该关闭连接。

对于隐式 TLS,您需要模拟或使用 SSL/TLS 客户端:发送初始请求,检查响应并断开连接。

由于您不想使用外部库,我不能向您推荐我们的 SecureBlackbox,它的 SMTP 组件可以让您在十几行代码中完成您需要的工作。

于 2013-05-31T18:29:07.133 回答