Advertisement
Masoko

rcontrol gmail imap sensor

Oct 21st, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.44 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import imaplib, base64, email
  4.  
  5. IMAP_HOST = 'imap.gmail.com'
  6. EMAIL_USER = 'user@gmail.com'
  7. EMAIL_PASSWORD = 'password'
  8. EMAIL_FILTER = 'rcontrol'
  9. EMAIL_DISARM_KEYWORD = 'Снемане'
  10.  
  11. def check_email():
  12.     mail = imaplib.IMAP4_SSL(IMAP_HOST)
  13.     mail.login(EMAIL_USER,EMAIL_PASSWORD )
  14.     mail.list()
  15.     mail.select(EMAIL_FILTER) # connect to inbox.
  16.  
  17.     result, data = mail.uid('search', None, "ALL") # search and return uids instead
  18.  
  19.     latest_email_uid = data[0].split()[-1]
  20.     latest_email_uid = latest_email_uid
  21.     latest_email_uid1 = str(int(latest_email_uid) -1)
  22.  
  23.     result, data = mail.uid('fetch', latest_email_uid, '(RFC822)')
  24.     result, data1 = mail.uid('fetch', latest_email_uid1, '(RFC822)')
  25.    
  26.     email_message = email.message_from_string(data[0][1])
  27.     email_message1 = email.message_from_string(data1[0][1])
  28.     #Disconect from IMAP server
  29.     mail.logout
  30.  
  31.     message = email_message.get_payload()[0]._payload  
  32.     message1 = email_message1.get_payload()[0]._payload
  33.     try:
  34.         message1 = base64.b64decode(message1)
  35.     except:
  36.         pass
  37.    
  38.     try:
  39.         message = base64.b64decode(message)
  40.     except:
  41.         pass       
  42.  
  43.     return message, message1
  44.  
  45. def check_alarm_status(message,message1):
  46.     if (EMAIL_DISARM_KEYWORD in message) or (EMAIL_DISARM_KEYWORD in message1) :
  47.         return "Off"
  48.        
  49.     else:
  50.         return "On"
  51.  
  52. if __name__ == '__main__':
  53.  
  54.     message, message1 = check_email()
  55.     print(check_alarm_status(message,message1))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement