Problema con Ethernet Shield w5100

Hola buenas, tengo un problema con el shield w5100 y es que no soy capaz de conseguir que funcione la función de enviar e-mails(quisiera que enviara un texto más algunas variables).
La cuestión es que he buscado varios tutoriales para que pueda enviar un correo electrónico, el que he utilizado asta ahora es el siguiente:

#include <SPI.h>
#include <Ethernet.h>     //Ethernet Shield
 
EthernetClient client;
 
//Shield requiere un MACADDRESS UNICO
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 
 
//Configura una IP, gateway y subnet para tu red local:
IPAddress ip(192, 168, 1, 10);  
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
 
//Reemplaza las xxx con la IP de tu servidor de correo
IPAddress servidormail(139, 162, 187, 151);
 
void setup()
{
    Serial.begin(9600);
    delay(1000);
    Serial.println("INICIO SISTEMA");
    Ethernet.begin(mac, ip, gateway, gateway, subnet);
    delay(2000);
    Serial.println("Ethernet Inicializado");
 
        //Cambia las cuentas de correo de remitente y destino por las que quieras probar tu!
    byte resultado = mandaremail(servidormail, "Hola desde ARDUINO", "Rutina de correo funciona", "envia@gmail.com", "recive@gmail.com");
    Serial.println("RESULTADO DE ENVIAR EMAIL: " + (String)resultado);
}
 
void loop()
{
    /* add main program code here */
}
 
 
byte mandaremail(IPAddress smtp, String titulo, String mensaje, String de, String para)
{
    byte thisByte = 0;
    byte respCode;
    Serial.println("Mandar correo iniciado");
    if (client.connect(smtp, 9090)) //Me conecto o devuelvo error
    {
        Serial.println(F("connectado"));
    }
    else {
        Serial.println(F("No pudo conectarse"));
        return 0;
    }
 
    if (!eRcv()) return 1;
 
    // coloca una ip pública tuya
    client.println(F("helo 1.2.3.4"));
    if (!eRcv()) return 2;
    client.println("MAIL From: <" + de + ">");
    if (!eRcv()) return 3;
    client.println("RCPT To: " + para);
    if (!eRcv()) return 4;
    client.println(F("DATA"));
    if (!eRcv()) return 5;
    client.println("To: You <" + para + ">");
    // change to your address
    client.println("From: cuenta <" + de + ">");
    client.println("Subject: " + titulo + "\r\n");
    client.println(mensaje);
    client.println(F("."));
    if (!eRcv()) return 6;
    client.println(F("QUIT"));
    if (!eRcv()) return 7;
    client.stop();
    return 255; // Email enviado
}
 
byte eRcv()
{
    byte respCode;
    byte thisByte;
    int loopCount = 0;
    while (!client.available()) {
        delay(1);
        loopCount++;
        // Si no recibo nada en 10 segs, doy timeout
        if (loopCount > 10000) {
            client.stop();
            Serial.println(F("\r\nTimeout"));
            return 0;
        }
    }
    respCode = client.peek();
    while (client.available())
    {
        thisByte = client.read();
        Serial.write(thisByte);
    }
    if (respCode >= '4')
    {
        efail();
        return 0;
    }
    return 1;
}
 
void efail()
{
    byte thisByte = 0;
    int loopCount = 0;
 
    client.println(F("QUIT"));
 
    while (!client.available()) {
        delay(1);
        loopCount++;
 
        // Si no recibo nada en 10 segs, doy timeout
        if (loopCount > 10000) {
            client.stop();
            Serial.println(F("\r\nTimeout"));
            return;
        }
    }
 
    while (client.available())
    {
        thisByte = client.read();
        Serial.write(thisByte);
    }
    client.stop();
    Serial.println(F("desconectado"));
}

Y el error que me aparece es el siguiente:

"INICIO SISTEMA
Ethernet Inicializado
Mandar correo iniciado
No pudo conectarse
RESULTADO DE ENVIAR EMAIL: 0"

Uso un ordenador portátil conectado a un router de Movistar vía WiFi (HomeStation).
Si alguien me pudiera echar un cable seria de agradecer, ya que no tengo ni idea de si tengo que asignar un puerto(cosa que no sé hacer), si es problema de la conexión PC-Arduino, u otra cosa.
Gracias de antemano.

Hace poco alguien preguntó por lo mismo. Busca las dos o tres primeras páginas de Software o Hardware.

Sigo teniendo el mismo problema aun enviándolo a otro correo outlook y el puerto no está ocupado. Surbyte no encuentro el otro post al que te refieres.

Busca las dos o tres primeras páginas de Software o Hardware.