import imaplibimport emaildef extract_body(payload):if isinstance(payload,str):return payloadelse:return '\n'.join([extract_body(part.get_payload()) for part in payload])conn = imaplib.IMAP4_SSL("pop.gmail.com", 993)conn.login("user@gmail.com", "password")#print "logined"conn.select()#typ, data = conn.search(None, 'UNSEEN')typ, data = conn.search(None, '(SINCE "3-Aug-2011")')#typ, data = conn.search(None, 'OR')#typ, data = conn.search(None, '')try:for num in data[0].split():typ, msg_data = conn.fetch(num, '(RFC822)')for response_part in msg_data:if isinstance(response_part, tuple):msg = email.message_from_string(response_part[1])subject=msg['subject'] print(subject)#payload=msg.get_payload()#body=extract_body(payload)#print(body)#if #conn.store(num, '+FLAGS', '\\Deleted')#conn.store(num, '+FLAGS', '\\Deleted')#conn.expunge()#typ, response = conn.store(num, '+FLAGS', r'(\Seen)')#typ, data = M.search(None, 'ALL')#for num in data[0].split():#M.store(num, '+FLAGS', '\\Deleted')#M.expunge()finally:try:conn.close()except:passconn.logout()
imap protocol is here:
http://tools.ietf.org/html/rfc3501.html#page-35
IMAP search critera strings is here:
http://www.example-code.com/csharp/imap-search-critera.asp
IMAP Search Keys are as follows:ALLAll messages in the mailbox; the default initial key forANDing.ANSWEREDMessages with the \Answered flag set.BCC Messages that contain the specified string in the envelopestructure's BCC field.BEFORE Messages whose internal date (disregarding time and timezone)is earlier than the specified date.BODY Messages that contain the specified string in the body of themessage.CC Messages that contain the specified string in the envelopestructure's CC field.DELETEDMessages with the \Deleted flag set.DRAFTMessages with the \Draft flag set.FLAGGEDMessages with the \Flagged flag set.FROM Messages that contain the specified string in the envelopestructure's FROM field.HEADER Messages that have a header with the specified field-name (asdefined in [RFC-2822]) and that contains the specified stringin the text of the header (what comes after the colon). If thestring to search is zero-length, this matches all messages thathave a header line with the specified field-name regardless ofthe contents.KEYWORD Messages with the specified keyword flag set.LARGER Messages with an [RFC-2822] size larger than the specifiednumber of octets.NEWMessages that have the \Recent flag set but not the \Seen flag.This is functionally equivalent to "(RECENT UNSEEN)".NOT Messages that do not match the specified search key.OLDMessages that do not have the \Recent flag set. This isfunctionally equivalent to "NOT RECENT" (as opposed to "NOTNEW").ON Messages whose internal date (disregarding time and timezone)is within the specified date.OR Messages that match either search key.RECENTMessages that have the \Recent flag set.SEENMessages that have the \Seen flag set.SENTBEFORE Messages whose [RFC-2822] Date: header (disregarding time andtimezone) is earlier than the specified date.SENTON Messages whose [RFC-2822] Date: header (disregarding time andtimezone) is within the specified date.SENTSINCE Messages whose [RFC-2822] Date: header (disregarding time andtimezone) is within or later than the specified date.SINCE Messages whose internal date (disregarding time and timezone)is within or later than the specified date.SMALLER Messages with an [RFC-2822] size smaller than the specifiednumber of octets.SUBJECT Messages that contain the specified string in the envelopestructure's SUBJECT field.TEXT Messages that contain the specified string in the header orbody of the message.TO Messages that contain the specified string in the envelopestructure's TO field.UID Messages with unique identifiers corresponding to the specifiedunique identifier set. Sequence set ranges are permitted.UNANSWEREDMessages that do not have the \Answered flag set.UNDELETEDMessages that do not have the \Deleted flag set.UNDRAFTMessages that do not have the \Draft flag set.UNFLAGGEDMessages that do not have the \Flagged flag set.UNKEYWORD Messages that do not have the specified keyword flag set.UNSEENMessages that do not have the \Seen flag set.