Inviare mail tramite arduino con la shield ethernet

Ciao a tutti, ho bisogno di ricevere una mail in un determinato caso ed ho copiato ed incollato il primo dei due sketch presente in Arduino Playground - HomePage creando una mail di virgilio e seguendo i 4 punti di descrizione.. il problema è che non si connette e nella porta seriale si ferma dopo aver tentato di connettersi, scrivendo "connection failed" e subito dopo "disconnecting". Ho un dubbio sul valore della porta indicata qui "if (client.connect(server, 25))" potreste dirmi se il problema è proprio questo e come risolverlo oppure dove sbaglio ?

 #include <SPI.h>
#include <Ethernet.h>
// Local network configuration:

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //mac di arduino

//MAC DELLA VOSTRA RETE

byte ip[] = { 192, 168, 1, 197 }; //ip di arduino

// INSERITE IL VOSTRO IP NELLA RETE LOCALE //ASSOCIATO AD ARDUINO

 // Login data:
 String UserName64 = "username in base 64";
 String Password64 = "pass in base 64";
 byte server[] = { 212, 48, 24, 47 }; //indirizzo ip di virgilio ricavato seguendo il punto 3 del link
// SMTP server VIRGILIO

 String ServerName = "virgilio.it";
 // Mail data:
 String Sender = "arduino.allarme@virgilio.it";
 String Recipient = "la mia mail @gmail.com";    
 // Indirizzo qualsiasi di posta elettronica
 String Subject = "Messaggio inviato da Arduino!";
String Body = "Testo del messaggio\nsu piu'\ndi una riga.";

int time = 1000;

 int wait = 1000;
 String ServerResponse="";
 EthernetClient client;
 void setup()
 {
  Serial.begin(9600);
  Serial.println("Program started, waiting for router...");
  delay(time);
 /* allow the router to identify the Arduino before the Arduino connects to the internet */
  Serial.println("Starting network module...");
  Ethernet.begin(mac, ip);
  delay(2000);
  Serial.println("connecting...");
  if (client.connect(server, 25)) {   
     Serial.println("connected");
     SendMsg("EHLO " + ServerName); /* say hello*/
     SendMsg("AUTH LOGIN ");
     SendMsg(UserName64); /* Username*/
     SendMsg(Password64); /* Password */
     SendMsg("MAIL From:<" + Sender +">");
 /* identify sender */
     SendMsg("RCPT To:<" + Recipient + ">");
 /* identify recipient */
     SendMsg("DATA");
     SendMsg("To: " + Recipient); 
/* recipient in message header */

     SendMsg("From: " + Sender); 
/* seder name in message header */

     SendMsg("Subject: "+ Subject);
 /* insert subject */
     SendMsg(""); /* empty line */
     SendMsg(Body); /* insert body */
     SendMsg(""); /* empty line */
     SendMsg("."); /* end mail */
     SendMsg("QUIT"); /* terminate connection */
     client.println();
  } else {
    Serial.println("connection failed");
  }
 }
 void loop()
 {
  if (client.available()) {
    char c = client.read();
    Serial.print(c);
  }
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
    for( ; ; )
      ;
  }
 }
 void GetResponse() {
    if (client.available()) {
         char c = client.read();
         while (client.available()) { // Store command char by char.
           ServerResponse +=c;
           c = client.read();
         }
    Serial.println("<<<" + ServerResponse);
    ServerResponse="";
  }
 }
 void SendMsg(String m) {
   client.println(m);
   Serial.println(">>>" + m);
   delay(wait); /* wait for a response */
   GetResponse();
 }

... ma c'è ancora qualche provider che accetta eMail NON sicure (SSL) ? :o :o :o

Ne dubito ... sarebbe assaltato dagli spammer ... per cui credo che oggi quel programma sia praticamnete inutilizzabile.

Leggiti QUESTO thread, forse dentro trovi qualche possibile alternativa ... ::o

Guglielmo

gpb01:
... ma c'è ancora qualche provider che accetta eMail NON sicure (SSL) ? :o :o :o
Ne dubito ... sarebbe assaltato dagli spammer ... per cui credo che oggi quel programma sia praticamnete inutilizzabile.

Hai ragione. Anche se ci sono ancora alcuni provider che consentono ancora connessioni SMTP "semplici", ma per proteggersi dagli spammer lo consentono solamente se le si fa dall'interno della propria rete e con autenticazione (obbligatoria).

Ma per quanto posso vedere, l'amico fa una connessione SMTP in chiaro (porta 25) al mail server del proprio provider (Libero) e successivamente attiverebbe anche l'autenticazione, ma non arriva proprio alla connessione perché, stando a QUESTA PAGINA, Libero accetta connessioni SMTP con SSL sulla porta 993, e diventa difficile gestire l'SSL con Arduino.

Era una verifica che avrebbe potuto (dovuto) fare direttamente l'amico Milotic...

Quindi allo stato attuale non saprei come fargli spedire una email, se non installando in locale (quindi in un PC nella stessa rete di Arduino) un mail server (ce ne sono tanti free), a sua volta configurato per inoltrare le email al suo server uplink, questa volta ovviamente in SSL sulla porta 993!

Un tempo c'era Temboo, ma come forse hai letto nella discussione che ho linkato ... anche loro, per ragioni di sicurezza, oggi accettano solo connessioni HTTPS e quindi hanno tagliato fuori tutto ciò che non è Arduino Yún o Arduino Yún Shield che sono le uniche cose che continuano a supportare ... :confused:

Guglielmo

gpb01:
Un tempo c'era Temboo, ma come forse hai letto nella discussione che ho linkato ... anche loro, per ragioni di sicurezza, oggi accettano solo connessioni HTTPS e quindi hanno tagliato fuori tutto ciò che non è Arduino Yún o Arduino Yún Shield che sono le uniche cose che continuano a supportare ... :confused:

Si, vero (magari SSL non HTTPS :wink: ) ma continuo a suggerire all'amico di utilizzare un SMTP server locale (ripeto, ce ne sono tanti free, come hMailServer), che accetti connessioni in chiaro (porta 25) e che faccia a sua volta forward verso uplink in SSL sulla porta 993 (o quello che è previsto dal server utilizzato). Per ora è l'unica soluzione secondo me.

docdoc:
Si, vero (magari SSL non HTTPS :wink: ) ...

... beh, veramente, io parlavo della connessione a Temboo e ... questa è l'eMail di Temboo:

For security reasons, we recently removed support for Arduino shields that establish insecure connections with Temboo. We now support Arduino devices and shields that create secure connections via HTTPS, meaning that all data transferred between your Arduino board and Temboo is encrypted in transit and therefore not vulnerable to interception. This follows best practices for building secure IoT applications.

Guglielmo

Fammi capire Guglielmo, non conosco Temboo (e mi documenterò, per capire se mi sia utile in qualche modo :wink: ) ma andando sul sito mi sembra parli solo di connessioni "cloud" in generale, e il passaggio ad HTTPS non è fatto per evitare spammers o SMTP open relay, ma per evitare l'intercettazione delle comunicazioni tra Arduino e Temboo.
Quindi cosa ha a che fare con il problema di Milotic? :smiley:
EDIT: visto, ha anche la possibilità di mandare email, puoi anche non rispondermi :wink:
Però interessante, me lo studio un poco.

Temboo offre tutta una serie di servizi per fare cose che con Arduino NON riusciresti (facilmente o affatto) a fare ... inviare eMail, connetterti a Dropbox, eBay, facebook, ecc. ecc. ecc. ... hanno un'infinità di servizi con cui puoi interfacciarti, ma, purtropo, ora li hanno resi disponibili solo se ci arrivi con HTTPS e tramite Yún Shield ... niente più Ethernet shield o WiFi shield :frowning:

Iscriviti (tanto è gratuito fino ad un certo numero di utilizzi/mese) e guarda tutte le cose che offrono ... :slight_smile:

Guglielmo

prendo in condiderazione tutte e due le vostre risposte e vi ringrazio per avermi risposto appunto. Mi avete proposto due meotdi del quale non ero a conoscenza e di conseguenza non so da dove partire per gestire l'invio di una mail tramite arduino via Temboo oppure hMailServer, vi chiedo se per favore potete postarmi qualche link di tutorial oppure cosa cercare nello specifico per capire cosa devo fare
Grazie nel frattempo!

Per farlo via Temboo, come ho detto, devi necessariamente prendere una Yún Shield e, se non conosci Linux può essere un problema (... per usarla bene almeno un po' le basi di Linux bisogna averle). Dopo di che ti iscrivi a Temboo e trovi tutto li dentro :slight_smile:

La strada suggerita da docdoc prevede che tu metti su una tua macchina (PC) un piccolo mail server al quale, in "locale" mandi la tua eMail e lui provvede ad inoltrarla in modo sicuro, tramite SSL, ad un vero mail server di un tuo provider. Anche questa, se non conosci bene come funziona un mail server, il protocollo SMTP, ecc. ecc. la vedo una strada lunga e complicata ...

Insomma, come ti metti ti metti ... dovrai studiarci sopra un bel po' :slight_smile:

Guglielmo

se per favore potete postarmi qualche link di tutorial oppure cosa cercare nello specifico per capire cosa devo fare

Io da un paio d'anni uso smtp2go , l'ho installato in un Arduino che mi controlla se c''e posta in cassetta

Arduino Playground - HomePage il secondo sketch

Brunello:
Io da un paio d'anni uso smtp2go , l'ho installato in un Arduino che mi controlla se c''e posta in cassetta

Arduino Playground - HomePage il secondo sketch

... non lo conoscevo ... buono a sapersi :wink:

Guglielmo

Io sto usando PushingBox, come detto nell'altro post. Mi sono fatto un micro-client per EN28J60 e devo dire che funziona molto bene, sia per le notifiche su smartphone che per le mail. Si possono (in realtà si devono) definire dei template con delle variabili da sostituire, in modo da inviare al sito solo i valori, lui formatta e invia.

avendo un arduino uno e non conoscendo linux la soluzione di Guglielmo è troppo complicata rispetto alle mie conoscenze, il mail server hMailServer potrebbe essere una soluzione ma devo studiarmelo anche questo, invece utilizzando smtp2go credo sia molto più semplice giusto? basta che carico lo sketch incluso nel link postato da Brunello cambiando i miei ip mac e email e poi dovrebbe funzionare giusto?

ringrazio sukkopera della risposta ma ho bisogno di più informazioni sul metodo proposto perchè non lo conosco.. potresti postarmi un esempio o una spiegazione per cortesia?

...... e poi dovrebbe funzionare giusto?

Devi comunque registrarti prima al servizio

Io sto usando PushingBox...

Carino anche questo.
Mi stò chiedendo quanti ce ne siano di questi servizi, visto che ogni tanto se ne scopre uno nuovo
Ultimamente mi stò divertendo con i BOT di Telegram, visto che la uso come App di messaggistica principale

In verità, gratuiti credo non ce ne siano moltissimi. PushingBox mi piace perché puoi definire gli "scenari" e poi associarvi diversi tipi di notifiche. Quindi puoi passare da mail a notifiche smartphone, ad esempio, senza modificare sketch.

Quindi puoi passare da mail a notifiche smartphone, ad esempio, senza modificare sketch.

Mi hai incuriosito, mo' lo provo

Carinissimo. PushingBox
Peccato che tocchi aggiungere App allo smartphone ( io ho installato Newtifry ).
Però l'idea dei vari scenari possibili non è male come idea, senza cambiare lo sketch ( che a volte rimane scomodo sostituire ) si può agire direttamente da web

Io lato smartphone uso Pushbullet, che in realtà è ancora più fiko in quanto dà la possibilità di ricevere le notifiche anche sui vari PC! Insomma, una catena di roba esagerata :D.