У меня есть код в c#. net 4.5.2, где я использую System. NET .Sockets.Socket для проверки подключения SMTP. Код работал нормально, когда TLS 1.0 был включен, но теперь мы перешли на TLS 1.2, и код сломался. Ниже приведен код, не работающий с TLS 1.2.
using (Socket tcpSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp))
{
tcpSocket.Connect(endPoint);
if (!CheckResponse(tcpSocket, 220))
{
return false;
}
// send HELO and test the response for code 250 = proper response
SendData(tcpSocket, string.Format("HELO {0}\r\n", Dns.GetHostName()));
if (!CheckResponse(tcpSocket, 250))
{
return false;
}
// if we got here it's that we can connect to the smtp server
return true;
}
private static bool CheckResponse(Socket socket, int expectedCode)
{
while (socket.Available == 0)
{
System.Threading.Thread.Sleep(100);
}
byte[] responseArray = new byte[1024];
socket.Receive(responseArray, 0, socket.Available, SocketFlags.None);
string responseData = Encoding.ASCII.GetString(responseArray);
int responseCode = Convert.ToInt32(responseData.Substring(0, 3));
if (responseCode == expectedCode)
{
return true;
}
return false;
}
Проблема в том, что я не могу использовать приведенный выше код, когда TLS 1.2 включен. Может кто-нибудь помочь мне написать код, который совместим с TLS 1.2
Заранее спасибо.