Hola,
He ido avanzando y ya consigo enviar correos desde Arduino UNO, previamente me he creado una cuenta en smtp2go. El caso es que consigo enviar correos desde el monitor Serie, sin embargo no consigo enviar el correo poniendo los comandos desde el programa Arduino.
Introduciendo los comandos desde el monitor Serie puedo enviar correos, utilizo el siguiente programa:
#include <SoftwareSerial.h>
SoftwareSerial BT1(2, 3); // RX | TX
void setup()
{ Serial.begin(9600);
BT1.begin(9600);
}
void loop()
{ String B= "." ;
if (BT1.available())
{ char c = BT1.read() ;
Serial.print(c);
}
if (Serial.available())
{ char c = Serial.read();
BT1.print(c);
}
}
Los comandos que introduzcon en el monitor serie son:
AT+CWJAP="MXXXX_XXXX","XXXXXXXm7nujvTyT3us" //Cambiado algunos caracteres
AT+CIFSR
AT+CIPSTART="TCP","mail.smtp2go.com",2525
AT+CIPSEND=19
EHLO 192.168.1.55
AT+CIPSEND=12
AUTH LOGIN
AT+CIPSEND=26
XX5vZ2FsZXNAYYYhaWwuZZZZ //Base 64, cambiados caracteres usuario
AT+CIPSEND=18
ZZZZTAAAR2YYYjdp //Base 64, cambiados caracteres contraseña personal
AT+CIPSEND=32
MAIL FROM:<xxxxxxxx@gmail.com> //Cambiados caracteres para no proporcionar información personal
AT+CIPSEND=30
RCPT To:<xxxxxxxx@gmail.com> //Cambiados caracteres para no proporcionar información personal
AT+CIPSEND=6
DATA
AT+CIPSEND=17
Testing Success
AT+CIPSEND=3
.
AT+CIPSEND=6
QUIT
Con este programa consigo enviar correos, por el monitor serie voy viendo las respuestas del servidor smtp
Como introducir comandos por el monitor serie no es muy operativo he realizado el siguiente programa para automatizarlo, sin embargo el correo no llega.
#include <SoftwareSerial.h>
SoftwareSerial softSerial(2, 3); // RX, TX
void envioCorreo(){
Serial.println("Intentando conexion smptp");
softSerial.print("AT+CWJAP=\"XXXXXXX_XXXX\",\"XXXXXXXm7nujvTyT3us\""); //Cambiado algunos caracteres para no publicar datos mios
delay(6000);
softSerial.println("AT+CIFSR");
softSerial.println("AT+CIPSTART=\"TCP\",\"mail.smtp2go.com\",2525");
delay(2000);
softSerial.println("AT+CIPSEND=19");
delay(2000);
softSerial.println("EHLO 192.168.1.55");
delay(2000);
softSerial.println("AT+CIPSEND=12");
delay(2000);
softSerial.println("AUTH LOGIN");
delay(2000);
softSerial.println("AT+CIPSEND=26");
delay(2000);
softSerial.println("XX5vZ2FsZXNAYYYhaWwuZZZZ"); //Base 64 //Cambiado algunos caracteres para no publicar datos mios
delay(2000);
softSerial.println("AT+CIPSEND=18");
delay(2000);
softSerial.println("ZZZZTAAAR2YYYjdp"); //Base 64 //Cambiado algunos caracteres para no publicar datos mios
delay(2000);
softSerial.println("AT+CIPSEND=32");
delay(2000);
softSerial.println("MAIL FROM:<xxxxxxxx@gmail.com>"); //Cambiado algunos caracteres para no publicar datos mios
delay(2000);
Serial.println("Por la mitad");
softSerial.println("AT+CIPSEND=30");
delay(2000);
softSerial.println("RCPT To:<xxxxxxxx@gmail.com>"); //Cambiado algunos caracteres para no publicar datos mios
delay(2000);
softSerial.println("AT+CIPSEND=6");
delay(2000);
softSerial.println("DATA");
delay(2000);
softSerial.println("AT+CIPSEND=17");
delay(2000);
softSerial.println("Testing Success");
delay(2000);
softSerial.println("AT+CIPSEND=3");
delay(2000);
softSerial.println('.');
delay(2000);
softSerial.println("AT+CIPSEND=6");
delay(2000);
softSerial.println("QUIT");
Serial.println("Fin");
}
void setup()
{
// Serial.begin(9600);
softSerial.begin(9600);
Serial.print("setup begin\r\n");
envioCorreo();
}
void loop()
{
}
El problema de hacerlo asi, es que no salen por pantalla las respuestas del servidor smtp, por lo que no se si hay algo que no le gusta. Lo que si veo con un scaneador de la red que el modulo se conecta a la wifi.
¿Alguna idea?