Pythonでメールの件名や本文を取り込む

基本的に

unicode(text, 'iso-2022-jp').encode("utf-8")

みたいに、取り出したものを文字コード指定でユニコード化して、utf-8にencodeをかけるようだ。

なので、

subject = decode_header(m["Subject"])
for i, v in enumerate(subject):
    title = unicode(v[i], 'iso-2022-jp').encode("utf-8")

とか、

body =  unicode(part.get_payload(decode=True), enc).encode('utf-8')

とかで、データベースに入れても文字化けしなくなる。