在发送电子邮件之前确定TLS支持

时间:2013-05-31 18:06:20

标签: sockets email ssl smtp

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

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

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

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

可以简单地使用System.Net.Sockets填充吗?

谢谢, 凯文

1 个答案:

答案 0 :(得分:0)

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

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

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

由于您不想使用外部库,我不推荐您使用我们的SecureBlackbox,其SMTP组件可让您在十几行代码中执行所需操作。