Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Imap:
- def GET(self, username, servername):
- ret = []
- params = web.input()
- logging.debug('HTTP Parameters: {0}'.format(web.input()))
- passwd = params['password']
- if not params.has_key('ssl'):
- server = imaplib.IMAP4_SSL(servername)
- else:
- server = imaplib.IMAP4(servername)
- rv, data = server.login(username, passwd)
- logging.debug('Connected!')
- rv, data = server.list()
- rv, data = server.select('inbox')
- rv, data = server.search(None, 'ALL')
- logging.debug('Found Messages!')
- for msg_number in data[0].split():
- entry = {}
- msg = server.fetch(msg_number, '(RFC822)')[1][0][1]
- message = email.message_from_string(msg)
- decoded_subject = message['Subject']
- entry['subject'] = decoded_subject.decode('utf-8').encode('ascii', errors='ignore')
- date_tuple = email.utils.parsedate_tz(message.get('Date', message.get('Received', None)))
- entry['date'] = datetime.datetime.fromtimestamp(email.utils.mktime_tz(date_tuple)).strftime("%a, %d %b %Y %H:%M:%S")
- entry['body'] = ''
- if message.is_multipart():
- for payload in message.get_payload():
- entry['body'] = entry['body'] + str(payload)
- else:
- entry['body'] = str(message.get_payload())
- ret.append(entry)
- server.close()
- # always compress, as output will be large
- web.header('Content-Encoding', 'gzip')
- gzip_buffer = StringIO.StringIO()
- gzip_file = gzip.GzipFile(mode='wb',
- fileobj=gzip_buffer)
- gzip_file.write(json.dumps(ret, indent=4))
- gzip_file.close()
- ret = gzip_buffer.getvalue()
- return ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement