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.