Приветствую всех. Столкнулся с проблемой - решил написать скетч для проверки количества писем в почтовом ящике. За основу взял код из статьи на гиктаймсе. Во время работы, ESP конектится с POP сервером на 995 порту, проходит проверку сертификата, проходит проверку логина и застревает на пароле (не возвращает ОК). Логин и пароль отправлял в закодированном dbase64 виде. Если кто знает, либо сталкивался с этой проблемой подскажите пожалуйста. Пробовал и gmail(включен pop) и mail.ru не получается ничего.
Код:
/*
*/
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
const char* ssid = "********";
const char* password = "********";
//const char* host = "pop.gmail.com";//google host
const char* host = "pop3.mail.ru";//mail.ru host
//const char* mailuser = "********";//google user
const char* mailuser = "********";//mail.ru user
//const char* mailpass = "********";//google
const char* mailpass = "********";//mail.ru
const int httpsPort = 995;
const char* fingerprint = "5B 26 79 14 A9 F7 A0 D4 FB 83 B5 98 67 0D EA 90 39 63 AD 73"; // Отпечаток SHA1 Сертификата pop3.mail.ru:995
//const char* fingerprint = "3A E5 78 41 AD 05 D0 9D 8B A0 60 A6 13 B4 B3 0D 3F 24 63 68"; // Отпечаток SHA1 Сертификата pop.gmail.com:995
String line;
void setup() {
Serial.begin(115200);
Serial.println();
Serial.print("connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
//--------------------------TLS--------------------------------------------------
// Use WiFiClientSecure class to create TLS connection
WiFiClientSecure client;
Serial.print("connecting to ");
Serial.println(host);
if (!client.connect(host, httpsPort)) {
Serial.println("connection failed");
return;
}
//--------------------------FINGEPRINT-----------------------------------------------------
if (client.verify(fingerprint, host)) {
Serial.println("certificate matches");
} else {
Serial.println("certificate doesn't match");
}
//-----------------------------------------------------------------------------------
line = client.readStringUntil('\n');
Serial.println("Otvet 1:");
Serial.println(line);
//--------------------------USER-----------------------------------------------------
client.print(String("USER ")+mailuser+"\r\n");
line = client.readStringUntil('\n');
Serial.println("Answer After USER:");
Serial.println(line);
//--------------------------PASS-----------------------------------------------------
client.print(String("PASS ")+mailpass+"\r\n");
line = client.readStringUntil('\n');
Serial.println("Answer After PASS:");
Serial.println(line);
if (line==String("+OK Welcome!\r"))
{
client.print(String("STAT\r\n"));
line = client.readStringUntil('\n');
Serial.println("Answer After command STAT:");
Serial.println(line);
client.print(String("QUIT\r\n"));
line = client.readStringUntil('\n');
Serial.println("Answer After command QUIT:");
}
else { Serial.println("MAIL#ERA"); }
client.flush();
client.stop();
}
void loop() {
}