Problem mit Variable
Verfasst: Montag 12. November 2018, 12:50
Hallo, ich bin neu hier in dem Forum ..
und mein erster Post ist gleich eine Bitte um Hilfe :oops
Es geht um folgendes ..
Ich möchte gerne meinen raspberry dazu bringen Emails die ich an ihn sende auszuwerten und dementsprechend Befehle zu verarbeiten.
Dazu sollen nur Email von meiner email-Addresse berücksichtigt werden.
Auch sollen es nur ungelesene Emails sein.
und zum schluß soll das email dann in ein log-file geschrieben werden und die email vom Server gelöscht werden (aber soweit bin ich noch nicht)
das Script ist noch nicht fertig aber es ist schon ein Großteil geschaffen
Leider hänge ich aber gerade bei einem essentiellen Problem
Ich kann die Variable email_message aus der Funktion checkEmail() in der Funktion loop() nicht einlesen.
Irgendwie sehe ich den Wald vor lauter Bäumen nicht mehr .
kann mir vielleicht jemand kurz helfen ??
und mein erster Post ist gleich eine Bitte um Hilfe :oops
Es geht um folgendes ..
Ich möchte gerne meinen raspberry dazu bringen Emails die ich an ihn sende auszuwerten und dementsprechend Befehle zu verarbeiten.
Dazu sollen nur Email von meiner email-Addresse berücksichtigt werden.
Auch sollen es nur ungelesene Emails sein.
und zum schluß soll das email dann in ein log-file geschrieben werden und die email vom Server gelöscht werden (aber soweit bin ich noch nicht)
das Script ist noch nicht fertig aber es ist schon ein Großteil geschaffen
Leider hänge ich aber gerade bei einem essentiellen Problem
Ich kann die Variable email_message aus der Funktion checkEmail() in der Funktion loop() nicht einlesen.
Irgendwie sehe ich den Wald vor lauter Bäumen nicht mehr .
kann mir vielleicht jemand kurz helfen ??
Code: Alles auswählen
</s>#!/usr/bin/python
import datetime
import time
import email
import imaplib
#import mailbox
# Variables:
SENDER "BERECHTIGTE_EMAIL@GMAIL.COM"
EMAIL_ACCOUNT = "RASPBERRY_EMAIL@gmail.com"
PASSWORD = "RASPBERRY_PASSWORT"
HOST = "imap.gmail.com"
MAILBOX = "inbox"
MSG_SUBJECT = "CORRECT"
CHECK_FREQ = 3
# SCRIPT:
def checkEmail():
mail = imaplib.IMAP4_SSL(HOST);
mail.login(EMAIL_ACCOUNT, PASSWORD);
mail.list();
count = 0
mail.select(MAILBOX);
result, data = mail.uid('search', None, '(UNSEEN FROM "BERECHTIGTE_EMAIL@gmail.com")'); # (ALL/UNSEEN)
i = len(data[0].split())
for x in range(i):
latest_email_uid = data[0].split()[x]
result, email_data = mail.uid('fetch', latest_email_uid, '(RFC822)')
raw_email = email_data[0][1]
raw_email_string = raw_email.decode('utf-8')
email_message = email.message_from_string(raw_email_string)
# Header Details
date_tuple = email.utils.parsedate_tz(email_message['Date'])
if date_tuple:
local_date = datetime.datetime.fromtimestamp(email.utils.mktime_tz(date_tuple))
local_message_date = "%s" %(str(local_date.strftime("%a, %d %b %Y %H:%M:%S")))
email_from = str(email.header.make_header(email.header.decode_header(email_message['From'])))
email_to = str(email.header.make_header(email.header.decode_header(email_message['To'])))
subject = str(email.header.make_header(email.header.decode_header(email_message['Subject'])))
# Body details
for part in email_message.walk():
if part.get_content_type() == "text/plain":
body = part.get_payload(decode=True)
file_name = "email_" + str(x) + ".txt"
output_file = open(file_name, 'a') # w=write, a=append
output_file.write("From: %s\nTo: %s\nDate: %s\nSubject: %s\n\nBody: \n\n%s" %(email_from, email_to,local_message_date, subject, body.decode('utf-8')))
output_file.close()
input_file = open(file_name, 'r') # r=read (just temporary until script is finished)
print input_file.read()
print('Logging into ' + HOST)
time.sleep(CHECK_FREQ)
checkEmail()
else:
continue
def loop():
count = 0
while count < 10:
print('establishing connection to ... ' + HOST)
try:
checkEmail()
time.sleep(CHECK_FREQ)
if(email_message['Subject'] == MSG_SUBJECT):
print("- - - S U B J E C T C O R R E C T, (message accepted) - - -")
loop()
else:
print("- - - S U B J E C T W R O N G, (message declined) - - -")
loop()
except IndexError:
time.sleep(CHECK_FREQ)
if count < 9:
count = count +1
loop()
continue
else:
print("Something went wrong!")
print("N O C O N N E C T I O N")
loop()
count = 10
loop()
<e>