解析电子邮件问题

时间:2012-05-25 13:21:50

标签: python parsing email

我在解码我正在提取的电子邮件方面遇到了问题。

脚本应该登录到电子邮件帐户,获取未读邮件,然后将其存储在数据库中。我只想要电子邮件中的实际文本,但不需要任何html内容。

我找到了很多例子,但似乎都没有。 我已经尝试了thisthis以及我找到的更多内容。

我现在的守则:

import imaplib, sys, email
import email.parser

myparser = email.parser.Parser()
conn = imaplib.IMAP4_SSL(host='mail.something.com')

retcode, capabilities = conn.login('username', 'XXXXX')

conn.select('Inbox', readonly = 1) # Select inbox as read-only
retcode, messages = conn.search(None, '(UNSEEN)')
if retcode == 'OK':
    for message in messages[0].split(' '):
        if message == '':
            continue
         ret, data = conn.fetch(message,'(RFC822)')
         msg = email.message_from_string(data[0][1])
#        rootMessage = myparser.parse(data[0][1])

#        print 'Message %s\n%s\n' % (message, rootMessage)
        print msg
        print '---------------------------------------------------------------' 

 conn.close()

正如你所看到的那样,没有解码,因为我尝试的所有东西都失败了。

我对python很新,所以如果有人能引导我走向正确的方向,我会非常感激。黑客行为可以,它不是一个关键任务脚本,但通用解决方案最好。

-G

更新:

没有错误,问题是输出未正确解码。

示例输入:

 This is a test message.

 Gísli

输出:

 This is a test message.

 G=EDsli

1 个答案:

答案 0 :(得分:1)

这可以提供帮助:

import quopri

print quopri.decodestring(msg).decode('utf8')

或者这个:

import base64  

body = base64.b64decode(msg)