Forum >> Principianti >> Invio mail su condizione

Pagina: 1

Salve a tutti,



sono nuovissimo alla programmazione Python e sto implementatndo un piccolo server Raspeberry che si deve interfacciare con il mio impianto domotico Myhome Bticino ed inviarmi alcune mail a fronte di alcune mail che transitano sul bus dell'impianto. Sono riuscito a scrivere un programma che esegue il monitoraggio e la stampa delle frame ed un programma (separato) per testare l'invio delle mail; funziona tutto.

Il problema nasce quando voglio inserire la sezione che invia la mail nella IF che intercetta la frame; senza sezione di invio mail, stampo correttamente la frame che mi interessa e d il programma resta in ascolto di nuove frame; se inserisco la sezione che invia la mail (a valle del print) il programma esce subito senza print e senza inviare mail.



Non riesco a capire dov'è il problema e/o come gestirlo...




Allego il programma in modo da chiarire la situazione.




Vi ringrazio per eventuali suggerimenti.




Ciao




Guido









--- Ultima modifica di sherazan in data 2017-02-20 11:35:41 ---
Allegati
Non riesco a capire dov'è il problema e/o come gestirlo...

Ciao caro, non posso verificare il tuo script in questo momento, non c'è nessuna indizione di errore quando viene terminata l'esecuzione?
Ciao,



grazie per la risposta e scusa per il crosspost...




Se dallo script elimino la sezione da "body = antifurto inserito" fino a " print mail inviata", tutto funziona perfettamente e lo script resta in attesa delle frame stampando "luce accesa" o "luce spenta" a secondo della frame intercettata e si conclude solo con un mio CTRL+C.




Se uso solo la sezione che invia la mail (in uno script separato), tutto funziona bene, la mail viene inviata ed ovviamente lo script si conclude con RC=0.




Lo script che ti ho inviato, si chiude appena viene intercettata la frame di luce accesa e salta immediatamente a "except" senza stampare nulla s enon "connessione socket chiusa"....




Grazie per l'aiuto.
Se nessuno ti aiuta prima, domani ci do un'occhiata.

Cya
Lo script che ti ho inviato, si chiude appena viene intercettata la frame di luce accesa e salta immediatamente a "except" senza stampare nulla s enon "connessione socket chiusa"....
Prova a commentare il try: e il blocco di gestione (!) delle eccezioni....



PS: non capisco perché questo codice non mi stampa nulla:

>>> try: print(1/0)
... except: pass
... 
>>> 



--- Ultima modifica di ㎝ in data 2017-02-20 21:51:56 ---
THE 🍺-WARE LICENSE (Revision ㊷)
<carlo@🐍.it> wrote this post. As long as you retain this
notice you can do whatever you want with this stuff.
If we meet some day, and you think this stuff is worth it,
you can buy me a 🍺 in return. —㎝
Provato, ma commentando la line "try" ed il blocco "except" + le 3 righe successive, l'esecuzione termina immediatamente...



Credo ci sia qualche iterazione tra le istruzioni che si interessano di oprire la connessione con il gw, per eseguire il monitoraggio, e le istruzioni del sendmail.
Ciao, mi correggo: ho commentato i blocchi di cui sopra, modificato l'ident e rieseguito; di seguito l'output:

LUCE STUDIO ACCESA
Traceback (most recent call last):
File "./myhome.py", line 59, in <module>
monitor() # start the monitor
File "./myhome.py", line 42, in monitor
msg.attach(MIMEText(body, 'plain'))
AttributeError: 'str' object has no attribute 'attach'

Ovviamente è fatto in modo di mandare la frame che permette l'avvio del contenuto della IF.


--- Ultima modifica di Sherazan in data 2017-02-21 09:03:37 ---

--- Ultima modifica di Sherazan in data 2017-02-21 09:03:50 ---
Ho risolto il problema!!!!!!

Ho letto con attenzione il messaggio di errore di cui sopra ed ho capito: praticametne la variabile "msg" la usavo sia nel ciclo IF che nel blocco che manda la mail ed ovviamente questo creava casino al programma... E' stato sufficiente rinominare la variabile nel blocco che manda la mail da msg a msg1 e tutto ha funzionato!!!!

Grazie a tutti per avermi aperto la mente e alla prossima!!! :-)


Pagina: 1



Esegui il login per scrivere una risposta.