【问题标题】:Parsing emails problems解析邮件问题
【发布时间】:2012-06-01 01:57:57
【问题描述】:

我在解码正在获取的电子邮件时遇到问题。

脚本应该登录到一个电子邮件帐户,获取未读消息,然后将它们存储在数据库中。我只想要电子邮件中的实际文本,而不想要 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 很陌生,所以如果有人能引导我走向正确的方向,我将不胜感激。一个 hack 就可以了,它不是一个关键任务脚本,但一个通用的解决方案是最好的。

-G

更新:

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

示例输入:

 This is a test message.

 Gísli

输出:

 This is a test message.

 G=EDsli

【问题讨论】:

  • 什么失败了?请告诉确切的步骤和错误信息...
  • @ms4py - 我更新了我的问题

标签: python parsing email


【解决方案1】:

这会有所帮助:

import quopri

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

或者这个:

import base64  

body = base64.b64decode(msg) 

【讨论】:

  • 如果我尝试这个,我会得到一个错误:UnicodeDecodeError: 'utf8' codec can't decode bytes in position 222-227: unsupported Unicode code range 。有什么想法吗?
  • 尝试删除 .decode('utf8') 或用您的电子邮件编码替换 'utf8'
  • 谢谢。这让我在某个地方。我忘记将编码更改为 iso-8859-1 。
猜你喜欢
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
  • 2013-11-28
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
相关资源
最近更新 更多