Arduino ESP8266 no logra conectarse a gmail

Buenas, estoy con un proyecto personal donde me gustaría hacer un sistema de notificación cuando un Gmail entra en el buzón de entrada, en pocas palabras, un notificador de correos no leídos.

Para ello me base en un código que encentre en un foro ( Email notifier).

Aquí explica paso por paso como hacer y de donde sacar todo lo necesario.

El codigo que estoy utilizando es el siguiente:

#include <WiFiClientSecure.h>   // Include the HTTPS library
#include <ESP8266WiFi.h>        // Include the Wi-Fi library
#include <ESP8266WiFiMulti.h>   // Include the Wi-Fi-Multi library

ESP8266WiFiMulti wifiMulti;     // Create an instance of the ESP8266WiFiMulti class, called 'wifiMulti'


const char* host = "mail.google.com"; // the Gmail server
const char* url = "/mail/feed/atom";  // the Gmail feed url
const int httpsPort = 443;            // the port to connect to the email server

                                      // The SHA-1 fingerprint of the SSL certificate for the Gmail server (see below)
const char* fingerprint = "0A C0 B9 F9 0A 60 D9 E0 12 04 F0 8B 2C 68 70 DB 25 9E 2F DD";

                                      // The Base64 encoded version of your Gmail login credentials (see below)
const char* credentials = "bm90aWZpY2Fkb3IxLjBqbUBnbWFpbC5jb206bm90aWZpY2Fkb3IxLjA=";
const byte led = 13;

void setup() {
  Serial.begin(115200);         // Start the Serial communication to send messages to the computer
  delay(10);
  Serial.println('\n');

  pinMode(led, OUTPUT);

  wifiMulti.addAP("Redmi Go", "julio2001");   // add Wi-Fi networks you want to connect to


  Serial.println("Connecting ...");
  int i = 0;
  while (wifiMulti.run() != WL_CONNECTED) { // Wait for the Wi-Fi to connect: scan for Wi-Fi networks, and connect to the strongest of the networks above
    delay(250);
    Serial.print('.');
  }
  Serial.println('\n');
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());              // Tell us what network we're connected to
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());           // Send the IP address of the ESP8266 to the computer
  Serial.println('\n');
}

void loop() {
  int unread = getUnread();
  if (unread == 0) {
    Serial.println("\r\nYou've got no unread emails");
    digitalWrite(led, LOW);
  } else if (unread > 0) {
    Serial.printf("\r\nYou've got %d new messages\r\n", unread);
    digitalWrite(led, HIGH);
  } else {
    Serial.println("Could not get unread mails");
  }
  Serial.println('\n');
  delay(5000);
}

int getUnread() {    // a function to get the number of unread emails in your Gmail inbox
  WiFiClientSecure client; // Use WiFiClientSecure class to create TLS (HTTPS) connection
  Serial.printf("Connecting to %s:%d ... \r\n", host, httpsPort);
  if (!client.connect(host, httpsPort)) {   // Connect to the Gmail server, on port 443
    Serial.println("Connection failed");    // If the connection fails, stop and return
    return -1;
  }

  if (client.verify(fingerprint, host)) {   // Check the SHA-1 fingerprint of the SSL certificate
    Serial.println("Certificate matches");
  } else {                                  // if it doesn't match, it's not safe to continue
    Serial.println("Certificate doesn't match");
    return -1;
  }

  Serial.print("Requesting URL: ");
  Serial.println(url);

  client.print(String("GET ") + url + " HTTP/1.1\r\n" + 
               "Host: " + host + "\r\n" +
               "Authorization: Basic " + credentials + "\r\n" +
               "User-Agent: ESP8266\r\n" +
               "Connection: close\r\n\r\n"); // Send the HTTP request headers

  Serial.println("Request sent");

  int unread = -1;

  while (client.connected()) {                          // Wait for the response. The response is in XML format
    client.readStringUntil('<');                        // read until the first XML tag
    String tagname = client.readStringUntil('>');       // read until the end of this tag to get the tag name
    if (tagname == "fullcount") {                       // if the tag is <fullcount>, the next string will be the number of unread emails
      String unreadStr = client.readStringUntil('<');   // read until the closing tag (</fullcount>)
      unread = unreadStr.toInt();                       // convert from String to int
      break;                                            // stop reading
    }                                                   // if the tag is not <fullcount>, repeat and read the next tag
  }
  Serial.println("Connection closed");

  return unread;                                        // Return the number of unread emails
}

Todo lo necesario para conectarme a gmail lo tengo sin embargo en el Monitor Serie me muestra lo siguiente:

Connecting ...
.........

Connected to Redmi Go
IP address: 192.168.43.187


Connecting to mail.google.com:443 ... 
Connection failed
Could not get unread mails

Como se logra ver, me conecta a la red, me da una IP y hace ping con “mail.google.com:443” ya que probé en romper la URL y tarda demasiado en enviar que no se logro conectar, pero si la URL es correcta es cuestión de menos de un segundo.

Cambien probé en cambiar el usuario y contraseña que esta en base 64 y también probé con distintas fingerprint que lo obtuve desde mi consola en Windows, hasta me instale una maquina virtual para obtener ese fingerprint pero de todos modos me envía el mismo mensaje de error .

Quedare atento a sus comentarios, gracias:)
Saludos, Julio

Enviar emails desde cuentas de Gmail exige que la cuenta primero tolere el envío de mensajes POP. Lo hiciste?

Puede que tu sistema funcione y que no hayas eso eso, o que la seguridad de la cuenta tampoco lo permita.
Verifica que siga activado el acceso a aplicaciones menos seguras.

Buenas noches, la intención del proyecto es que el arruino consulte si tiene correos sin leer o no.

Actualmente, la configuración el Gmail tiene habilitada la opción de aplicaciones menos segura y habilitado la opción de acceso POP a al correo.

Saludos.