Salve a tutti,
sono riuscito dopo vari tentativi ad implementare uno script PHP che mi conti il numero di email non lette presso il mio account di posta Gmail...
il suddetto script non fa altro che stampare una pagina web contenente un solo carattere (numero) che indica il numero di email non lette... stampa zero nel caso non ce ne siano...
la pagina web contiene SOLO un numero, nient'altro, ne header, ne sintassi dichiarativa, nulla di nulla...
Come posso fare interpretare al mio Arduino tale numero, per quindi leggero ed elaborarlo, per ad esempio mostrarlo poi su di un display ad esso collegato? Come posso dunque fargli "leggere" tale numero?
Ciao, basta che fai delle lettura dal client ethernet, ad esempio:
Client c = server.available();
if (c.connected()) {
Serial.print("Incoming connection!\n");
uint8_t b1 = c.read();
uint8_t b2 = c.read();
}
a questo punto utilizzi i due byte per visualizzare il numero sul display. Il codice è preso dal playground manca la prima parte in cui ci si connette all'indirizzo desiderato, sicuramente non è molto ottimizzato come codice e non ho potuto testarlo ma in linea di massima dovrebbe essere ciò di cui hai bisogno... ad ogni modo se guadi negli esempi presenti nell'IDE trovi un sacco di materiale da cui partire per la libreria ethernet
Ciao
Grazie mille,
avevo implementato qualcosa di simile, ma ho preferito utilizzare la libreria Imap per estrapolare dal server il numero di email non lette, in quanto è ben più sicura come connessione e di solito è attivata anche in hosting condivisi (al contrario delle librerie CURL che solitamente vengono disattivate in hosting economici)
Se ti può essere utile ti posto il mio codice...
grazie del suggerimento
Eccoti qua il codice da me realizzato... credo non troverai difficoltà nel capirlo
<?php
//prolungo il timeout di default del PHP, per garantire l'esecuzione completa del ciclo di controllo
ini_set('max_execution_time', 300); //300 secondi = 5 minuti
// indirizzo server IMAP per la connessione
$server = '{imap.gmail.com:993/ssl/novalidate-cert}';
// account Gmail
$login = 'mia_email@gmail.com';
// password per l'accesso a Gmail
$password = 'mia_password';
$i=0;
$non_letti=0; //contatore dei messaggi non letti
// apro la connessione IMAP a Gmail
$connessione = imap_open($server, $login, $password);
//conto il numero di messaggi presenti nella rispettiva casella di posta
$conteggio = imap_num_msg($connessione);
//definisco il RANGE di controllo a partire dall'ltimo messaggio arrivato (scorrere l'intera lista dei messaggi nella casella sarebbe inutile e dispendioso in termini di tempo)
$range=50;
for($i=$conteggio;$i>($conteggio-$range);$i--)
{
//lavoro sulla singola email
$intestazioni = imap_headerinfo($connessione, $i);// estrapolo le informazioni di header
if($intestazioni->Unseen == 'U') //vero se non è stato ancora visualizzato
{
$non_letti=$non_letti+1;//incremento il contatore dei messaggi non letti
}
}
//stampo il numero di messaggi non letti
echo $non_letti;
//echo 'tutti i messaggi sono: '.$conteggio;
//chiudo la connessione
imap_close($connessione);
?>
Una sola raccomandazione:
qualora abbiate già attivato la nuova modalità di autenticazione di Google (verifica in due passaggi), dovrete accedere alla rispettiva pagina, creare una specifica password per lo script in questione ed inserire quest'ultima nello script stesso.
Ho focalizzato l'attenzione su questo dettaglio perché io stesso inizialmente ho trovato perplessità nel vedere l'autenticazione fallire, infatti Google renderà obbligatorio a breve questo tipo di autenticazione che quindi vi evita di mettere in chiaro nei vari script/applicazioni utilizzate la password principale del'account Google.
Personalmente, credo che sia un passo da fare... dopotutto è la nostra privacy!
Qui troverete tutte le risposte: