RSS

PythonでIMAP

PythonでIMAPに接続してみた。

基本はimaplibを使う。そのあとどうするかは付属ドキュメントとRFC3501を斜め読み。あるフォルダにあるメールのアドレスを抜き出すプログラムを書いてみた。ほんとはHaskellでやりたかったけどライブラリがなかったので妥協…。getpassを使ってパスワードは毎回入力する。

#!/usr/bin/python
import imaplib
import getpass
import email.parser
import rfc822
HOST = 'imap.example.com'
USER = 'example'
M = imaplib.IMAP4_SSL(HOST)
passwd = getpass.getpass()
M.login(USER,passwd)
status, data = M.select('INBOX.foo')
if status != 'OK':
raise
typ, data = M.search(None, 'ALL')
fromtable = {}
for num in data[0].split():
typ, ret = M.fetch(num, '(RFC822.HEADER)')
header =  ret[0][1]
p = email.parser.Parser()
msg = p.parsestr(header)
print rfc822.parseaddr(msg['from'])[1]
M.close()
M.logout()