我们有一个可以使用TLS发送电子邮件的系统。但是,如果目标支持TLS,我们只想发送带有附件的完整电子邮件。如果它不支持TLS,我们会发送不带附件的不同消息。
我们过去只是尝试使用TLS发送并等待接收器“失败”回到我们,然后发送备份消息。最近,我们通过Frontbridge切换到所有传出消息的中继。但是,如果可以,Frontbridge将使用TLS发送消息,如果不能,则使用TLS发送消息。我们已经失去了根据TLS支持自定义消息的能力。
问题是:在.NET C#Web应用程序中,如何在发送任何内容之前判断目标是否支持TLS?这样我们就可以在通过Frontbridge中继之前自定义消息。
我需要能够以编程方式执行此操作,但我不想在我们的解决方案中添加整个库(如Minimalistic Telnet),因为我们不需要完整的telnet功能......我只需要ping到服务器并询问它支持的内容!
可以简单地使用System.Net.Sockets填充吗?
谢谢, 凯文
答案 0 :(得分:0)
是的,您需要编写部分SMTP协议。
对于显式TLS模式:您连接,接收和发送数据,然后发送STARTTLS命令并查看响应是否为220.那么您应该关闭连接。
对于隐式TLS,您需要模拟或使用SSL / TLS客户端:发送初始请求,检查响应并断开连接。
由于您不想使用外部库,我不推荐您使用我们的SecureBlackbox,其SMTP组件可让您在十几行代码中执行所需操作。