Advertisement
hd1

hd1/unitsImap

hd1
Nov 24th, 2015
525
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.88 KB | None | 0 0
  1.  
  2. class Imap:
  3.     def GET(self, username, servername):
  4.         ret = []
  5.         params = web.input()
  6.        
  7.         logging.debug('HTTP Parameters: {0}'.format(web.input()))
  8.         passwd = params['password']
  9.  
  10.         if not params.has_key('ssl'):
  11.             server = imaplib.IMAP4_SSL(servername)
  12.         else:
  13.             server = imaplib.IMAP4(servername)
  14.  
  15.         rv, data = server.login(username, passwd)
  16.         logging.debug('Connected!')
  17.         rv, data = server.list()
  18.         rv, data = server.select('inbox')
  19.         rv, data = server.search(None, 'ALL')
  20.         logging.debug('Found Messages!')
  21.         for msg_number in data[0].split():
  22.             entry = {}
  23.             msg = server.fetch(msg_number, '(RFC822)')[1][0][1]
  24.  
  25.             message = email.message_from_string(msg)
  26.  
  27.             decoded_subject = message['Subject']
  28.             entry['subject'] = decoded_subject.decode('utf-8').encode('ascii', errors='ignore')
  29.  
  30.             date_tuple = email.utils.parsedate_tz(message.get('Date', message.get('Received', None)))
  31.             entry['date'] =  datetime.datetime.fromtimestamp(email.utils.mktime_tz(date_tuple)).strftime("%a, %d %b %Y %H:%M:%S")
  32.             entry['body'] = ''
  33.             if message.is_multipart():
  34.                 for payload in message.get_payload():
  35.                     entry['body'] = entry['body'] + str(payload)
  36.             else:
  37.                 entry['body'] = str(message.get_payload())
  38.             ret.append(entry)
  39.  
  40.         server.close()
  41.  
  42.         # always compress, as output will be large
  43.         web.header('Content-Encoding', 'gzip')
  44.         gzip_buffer = StringIO.StringIO()
  45.         gzip_file = gzip.GzipFile(mode='wb',
  46.                                   fileobj=gzip_buffer)
  47.         gzip_file.write(json.dumps(ret, indent=4))
  48.         gzip_file.close()
  49.         ret = gzip_buffer.getvalue()
  50.        
  51.         return ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement