Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- import email
- import poplib
- import imaplib
- import datetime
- class MailObject(object):
- def __init__(self):
- self.email_box_type = 'imap'
- self.email_box_ssl = True
- self.email_box_port = 993
- self.email_box_host = 'imap.gmail.com'
- self.email_box_user = 'test'
- self.email_box_pass = 'test_pass'
- self.email_box_imap_folder = 'INBOX'
- def get_first_text_block(email_message_instance):
- maintype = email_message_instance.get_content_maintype()
- if maintype == 'multipart':
- for part in email_message_instance.get_payload():
- if part.get_content_maintype() == 'text':
- return part.get_payload()
- elif maintype == 'text':
- return email_message_instance.get_payload()
- def process_mail(mb):
- if mb.email_box_type == 'pop3':
- if mb.email_box_ssl:
- if not mb.email_box_port: mb.email_box_port = 995
- server = poplib.POP3_SSL(mb.email_box_host, int(mb.email_box_port))
- else:
- if not mb.email_box_port: mb.email_box_port = 110
- server = poplib.POP3(mb.email_box_host, int(mb.email_box_port))
- server.getwelcome()
- server.user(mb.email_box_user)
- server.pass_(mb.email_box_pass)
- messagesInfo = server.list()[1]
- for msg in messagesInfo:
- msgNum = msg.split(" ")[0]
- msgSize = msg.split(" ")[1]
- full_message = "\n".join(server.retr(msgNum)[1])
- # Do something with the message
- server.dele(msgNum)
- server.quit()
- elif mb.email_box_type == 'imap':
- if mb.email_box_ssl:
- if not mb.email_box_port: mb.email_box_port = 993
- server = imaplib.IMAP4_SSL(mb.email_box_host, int(mb.email_box_port))
- else:
- if not mb.email_box_port: mb.email_box_port = 143
- server = imaplib.IMAP4(mb.email_box_host, int(mb.email_box_port))
- server.login(mb.email_box_user, mb.email_box_pass)
- server.select(mb.email_box_imap_folder)
- date = (datetime.date.today() - datetime.timedelta(days=1)).strftime("%d-%b-%Y")
- print date
- status, data = server.uid('search', None, '(SENTSINCE {date})'.format(date=date))
- for num in data[0].split():
- status, data = server.fetch(num, '(RFC822)')
- raw_message = data[0][1] if data[0] is not None else None
- print raw_message, data
- if not raw_message:
- continue
- email_message = email.message_from_string(raw_message)
- print email_message
- #print get_first_text_block(email_message)
- # Do something with the message
- #server.store(num, '+FLAGS', '\\Deleted')
- server.expunge()
- server.close()
- server.logout()
- print "Something already happened"
- if __name__ == '__main__':
- mb = MailObject()
- process_mail(mb)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement