Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>No... <code>imaplib</code> is a pretty good library, it's imap that's so unintelligible.</p> <p>You may wish to check that <code>t == 'OK'</code>, but <code>data[0][1]</code> works as expected for as much as I've used it.</p> <p>Here's a quick example I use to extract signed certificates I've received by email, not bomb-proof, but suits my purposes:</p> <pre><code>import getpass, os, imaplib, email from OpenSSL.crypto import load_certificate, FILETYPE_PEM def getMsgs(servername="myimapserverfqdn"): usernm = getpass.getuser() passwd = getpass.getpass() subject = 'Your SSL Certificate' conn = imaplib.IMAP4_SSL(servername) conn.login(usernm,passwd) conn.select('Inbox') typ, data = conn.search(None,'(UNSEEN SUBJECT "%s")' % subject) for num in data[0].split(): typ, data = conn.fetch(num,'(RFC822)') msg = email.message_from_string(data[0][1]) typ, data = conn.store(num,'-FLAGS','\\Seen') yield msg def getAttachment(msg,check): for part in msg.walk(): if part.get_content_type() == 'application/octet-stream': if check(part.get_filename()): return part.get_payload(decode=1) if __name__ == '__main__': for msg in getMsgs(): payload = getAttachment(msg,lambda x: x.endswith('.pem')) if not payload: continue try: cert = load_certificate(FILETYPE_PEM,payload) except: cert = None if cert: cn = cert.get_subject().commonName filename = "%s.pem" % cn if not os.path.exists(filename): open(filename,'w').write(payload) print "Writing to %s" % filename else: print "%s already exists" % filename </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload