Подскажите кто знает. Уже несколько дней мучаюсь с попыткой подключиться к серверу pop.mail.ru по 110 порту. При отправке USER получаю ошибку от сервера:
-ERR POP3 is available only with SSL or TLS connection enabled
В интернете все примеры не рассчитаны на то, что будет использоваться шифрование SSL или TLS, как подключиться с этим шифрованием? Может статьи какие нибудь есть? Спасибо за ответ.
Код:
mailclient = new TcpClient("pop.mail.ru", 110);
NetworkStream ns = mailclient.GetStream();
StreamReader sr = new StreamReader(ns);
StreamWriter sw = new StreamWriter(ns);
sw.WriteLine("USER " + "***@mail.ru");
sw.Flush();
Нужно использовать SslStream вместе с TcpClient, а затем использовать SslStream для чтения данных, а не TcpClient.
Что-то вроде:
TcpClient mail = new TcpClient();
SslStream sslStream;
int bytes = -1;
mail.Connect("pop.mail.ru", 995);
sslStream = new SslStream(mail.GetStream());
sslStream.AuthenticateAsClient("pop.mail.ru");
byte[] buffer = new byte[2048];
// Чтение потока, чтобы убедиться, что мы подключены
bytes = sslStream.Read(buffer, 0, buffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
//Отправить имя пользователя для входа в систему
sslStream.Write(Encoding.ASCII.GetBytes("USER USER_EMAIL\r\n"));
bytes = sslStream.Read(buffer, 0, buffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
//Отправить пароль для входа в систему
sslStream.Write(Encoding.ASCII.GetBytes("PASS USER_PASSWORD\r\n"));
bytes = sslStream.Read(buffer, 0, buffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
//Получить первое письмо
sslStream.Write(Encoding.ASCII.GetBytes("RETR 1\r\n"));
bytes = sslStream.Read(buffer, 0, buffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
Взято отсюда
Сборка персонального компьютера от Artline: умный выбор для современных пользователей