Domanda Aiuto Script Python mail

Stato
Discussione chiusa ad ulteriori risposte.

EmmeFreeze

Utente Gold
16 Dicembre 2013
686
18
177
209
Ciao a tutti, è da poco che studio il python e ho provato a creare uno script che quando lanciato, prende la temperatura della cpu del mio raspberry pi la inserisce in una variabile e poi la manda in una mail.

Codice:
#!/usr/bin/python
import smtplib
import os


fromaddr = 'mail'
toaddrs  = 'mail'




temp = "cat /sys/class/thermal/thermal_zone0/temp"


msg = 'La temperatura del raspberry è di (qui deve essere inserita la variabile "temp") gradi'




# Gmail Login


username = 'miologin'
password = 'miapassword'


# Sending the mail  


server = smtplib.SMTP('smtp.gmail.com:587')
server.starttls()
server.login(username,password)
server.sendmail(fromaddr, toaddrs, msg)
server.quit()

il problema è che non so come fare in modo che la il contenuto della variabile "si metta insieme al testo" e poi venga inviato.

Grazie in precedenza per l'aiuto
 
msg = testo,temp,testo oppure
msg = testo + temp + testo

Inviato dal mio HUAWEI G510-0100 utilizzando Tapatalk
 
Ultima modifica:
Ook.. appena ho il PC lo provo...

Inviato dal mio HUAWEI G510-0100 utilizzando Tapatalk

ho creato un timer che ripete l'azione ogni tot di secondi:

Codice:
#!/usr/bin/python
import smtplib
import os
import commands
import time






def mailtemp():
    temp = commands.getoutput('cat /sys/class/thermal/thermal_zone0/temp')
    tempreal = temp[0] + temp[1] + "," + temp[2] + temp[3] + temp[4]


    to = '[email protected]'
    gmail_user = 'emisfsdoli'
    gmail_pwd = 'chsdgsdgsdg'
    smtpserver = smtplib.SMTP("smtp.gmail.com",587)
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.ehlo
    smtpserver.login(gmail_user, gmail_pwd)
    header = 'To:' + to + '\n' + 'From: ' + gmail_user + '\n' + 'Subject:TEMPERATURA CPU \n'


    msg = header + "\n La temperatura del raspberry e' di " + tempreal + " gradi \n\n"
    smtpserver.sendmail(gmail_user, to, msg)
    print 'Fatto'
    smtpserver.close()


t = Timer(10.0, mailtemp)
t.start()

ma mi da questo errore:



pi@EmmeServer ~ $ python timer.py
Traceback (most recent call last):
File "timer.py", line 5, in <module>
import timer
File "/home/pi/timer.py", line 29, in <module>
t = Timer(10.0, hello)
NameError: name 'Timer' is not defined
pi@EmmeServer ~ $

RISOLTO.. (ho messo threading.Timer al posto di Timer e ho importato il modulo di threading)


ora però vorrei fare in modo che ogni tot di tempo rimandi la mail e non solo una volta
 
  • Mi piace
Reazioni: TheSeeker
Mmh hai importato il modulo giusto, da quando ho capito l'interprete non riconosce Timer(10.0,mailtemp)

Inviato dal mio HUAWEI G510-0100 utilizzando Tapatalk
 
Oh, aggiunge le parentesi a mailtemp in Timer (Timer(10.0,mailtemp())

Inviato dal mio HUAWEI G510-0100 utilizzando Tapatalk
 
Basta che crei una funzione che serve a inviare l'email, tramite un controllo condizionale controlli il tempo passato e richiami più volte la funzione.

Inviato dal mio HUAWEI G510-0100 utilizzando Tapatalk
 
Non ho ancora visto i thread o timer però potresti fare così:
mail():
.... codice per inviarla
INIZIO TIMER
richiama mail()
Così in teoria, invia la mail, fa partire il timer e poi richiama se stessa.
 
Stato
Discussione chiusa ad ulteriori risposte.