.[RISOLTO]Inviare email con arduino Yun senza Temboo.

Salve, è possibile inviare email senza Temboo?

Si, se utilizzi server che non richiedono la cifratura del traffico.

Quali sono i server che non richiedono la cifratura del traffico?

e possibile trovare in rete un semplice esempio di codice funzionante per arduino yun ?

Quelli che funzionano senza cifratura dovrebbero essere quelli che usano SMTP ma se mi chiedi un esempio.... credo Tiscali e Virgilio. Gmail no.

Non ho codice funzionante per Yun ma se cerchi in rete come spedire mail manualmente in STMP ce ne sono tanti, tipo questo:
Come Inviare una Email Usando Telnet: 8 Passaggi (Però dice che si può usare Google, io so di no!)

C'è un problema: di solito i server sono accessibili in questo modo dalla propria rete, Virgilio dovrebbe essere accessibile da TIM/Telecom ad esempio, perché come puoi vedere nell'esempio non c'è autenticazione, puoi impersonare chiunque e puoi mandare un sacco di spam.
La soluzione Temboo/Google è nata proprio in virtù del fatto che così funziona a qualsiasi rete ti colleghi.
Scrivendoti però mi son ricordato che se Arduino non è abbastanza potente per gestire mail cifrato con Google (ecco perché si usa Temboo) magari la Yun si.
E qui c'è un post al riguardo
http://forum.arduino.cc/index.php?topic=195776.0
Vedi il messaggio 5

Risolto con questo esempio.

Grazie per la condivisione!

Una mano lava l'altra.

Buongiorno a tutti,

dopo un giorno di lavoro mi permetto di fare un aggiornamento alle istruzioni contenute su

utilizzando il terminale di YUN

eseguire

opkg update

installare SSMTP

  • opkg install ssmtp*

una volta installato creare una copia di ssmtp.conf

mv /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.bkp

creare un nuovo file con l'editor VI

vi /etc/ssmtp/ssmtp.conf

nel file, PER GMAIL alla data odierna, inserire

root=tuonome@gmail.com
mailhub=smtp.gmail.com:587
rewriteDomain=
hostname=smtp.gmail.com:587
UseSTARTTLS=YES
AuthUser=tuonome@gmail.com
AuthPass=tuapassword
FromLineOverride=YES # optional
TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt

l'ultima riga è un'integrazione rintracciata tramite google su vari siti e, ad oggi, è indispensabile per non ottenere errori

inoltre, sempre nella cartella /etc/ssmtp/

creare una copia di revaliases

mv /etc/ssmtp/revaliases /etc/ssmtp/revaliases.bkp

modificare il file revaliases con il comando

vi /etc/ssmtp/revaliases

e inserire la riga

root:tuonome@gmail.com:smtp.gmail.com:587

a questo punto

chmod 640 /etc/ssmtp/ssmtp.conf
chmod 640 /etc/ssmtp/revaliases

e testare il funzionamento con

cd /root
echo "Hello world" > test.txt
cat test.txt | ssmtp maildestiantario@dominio.it

se dopo aver dato l'invio non vi ritorna alcun messaggio.... la mail dovrebbe funzionare..

Buon lavoro a tutti,
sarei contento se il moderatore mi confermasse di non aver scritto "male" il post (è il primo che scrivo da utente "attivo" e non passivo...)

Grazie per la condivisione!
E' utile anche in altri ambienti, a partire dai dispositivi con openWRT, che è poi la distribuzione Linux che usa la YUN.

Sulla forma ti suggerirei di usare un modo per differenziare i comandi dalle descrizioni.
Puoi selezionare il testo del comando e poi premere il pulsante più a sinistra dell'editor, che lo racchiuderà in una casella di codice, o usare l'italico.

Qui

Ho tovato anche questa possibile soluzione per l'ultima riga che hai aggiunto dopo ricerche

I fixed it by changing my hostname: to the following in the ssmtp.conf:

hostname=localhost

Before it was hostname:emailaddress@gmail.com

Io le email dalla Yun le invio con uno script Python, si può invocare direttamente anche dallo sketch Arduino.

Esempio generico codice Python dove viene inviato in email il valore di alcuni sensori.

#!/usr/bin/python
import time
import sys  
import smtplib  
sys.path.insert(0, '/usr/lib/python2.7/bridge/') 
                                                
from bridgeclient import BridgeClient as bridgeclient
                                                     
TO = 'your email address here'
GMAIL_USER = 'your gmail account here'
GMAIL_PASS = 'your gmail password here'
SUBJECT = 'Digital pin changed value!!'
TEXT = 'Your digital pin went HIGH'
value = bridgeclient()                              
                                                     
#function to send email 
def send_email():
	print("Sending Email")
	smtpserver = smtplib.SMTP("smtp.gmail.com",587)
	smtpserver.ehlo()
	smtpserver.starttls()
	smtpserver.ehlo
	smtpserver.login(GMAIL_USER, GMAIL_PASS)
	header = 'To:' + TO + '\n' + 'From: ' + GMAIL_USER
	header = header + '\n' + 'Subject:' + SUBJECT + '\n'
	print header
	msg = header + '\n' + TEXT + ' \n\n' + TEXT2 + ' \n\n'
	smtpserver.sendmail(GMAIL_USER, TO, msg)
	smtpserver.close()

value = bridgeclient()

while True:
	message = value.get("D7")
	print message
 	if message == '1' :
 		TEXT2 =  "A0 analog value: "+ value.get("A0")
 		send_email()
		print "sending email, D7 went high!"
		print TEXT2
	elif message == "0":
		print "D7 low"
	else:
		print "no message"
	
	time.sleep(2)

Righe di codice per inviare le email dal lato Arduino della Yun tramite la libreria Bridge.

Process p;
p.runShellCommand("python /mnt/sda1/arduino/www/Dragino_H2_test/mymail.py");

ll percorso indicato nell runShell deve essere quello dove si trova lo script Python.

La riga TLS_CA_File=/etc/pki/tls/certs/ca-bundle.cr mi sa che si riferisce alla gestione dei certificati per la transazione cifrata.

Da quel che ho letto è successo che prima cunzionava anche senza e poi invece è cambiato qualcosa che ha richiesto il cambiamento e l'aggiunta della riga. Però mi par di aver capito che alcuni hanno risolto senza la riga ma cambiando l'hostname. Per cui può essere che si trattasse di un errore che prima Gmail tollerava e poi non più.

O magari i certificati prima si trovavano in una cartella e adesso in un'altra.

Se si tratta di un cambiamento da parte di Gmail può essere che pure il tuo script abbia problemi.