社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python3解析邮件正文的方式与Python2不同

Biggytiny • 6 年前 • 1917 次点击  

目前,我正在开发一个电子邮件解析器,它只需使用imaplib建立与我的gmail帐户的连接并阅读新的电子邮件。

这一切都很好,使用python2(即“python my script.py”)运行我的脚本时,结果与预期一样

例如,如果我有一封这样的电子邮件:

To: receiver@qwerty.com
From: sender@asdf.com
Subject: Test Subject

Test1
Test2

我的脚本将按预期输出:

To: receiver@qwerty.com
From: sender@asdf.com
Subject: Test Subject
Body: Test1
Test2

但是,当使用python3(即“python3 myScript.py”)运行此命令时,结果不同,转义字符显示在消息正文中,请参见以下内容:

To: receiver@qwerty.com
From: sender@asdf.com
Subject: Test Subject
Body: b'Test1\r\nTest2\r\n'

下面是用于此过程的代码:

def readMailbox(mail):
    res, data = mail.uid('search', None, 'UNSEEN')
    i = len(data[0].split())

    for x in range(i):
        latestEmailUID = data[0].split()[x]
        result, emailData = mail.uid('fetch', latestEmailUID, '(RFC822)')
        emailMessage = email.message_from_string(emailData[0][1].decode('utf-8'))

        emailFrom = str(email.header.make_header(email.header.decode_header(emailMessage['From'])))
        emailTo = str(email.header.make_header(email.header.decode_header(emailMessage['To'])))
        subject = str(email.header.make_header(email.header.decode_header(emailMessage['Subject'])))

        # Body details
        for part in emailMessage.walk():
            if part.get_content_type() == 'text/plain':
                body = part.get_payload(decode=True)
                print('To: %s' % emailTo)
                print('From: %s' % emailFrom)
                print('Subject: %s' % subject)
                print('Body: %s' % body)

我需要能够捕获字符串体,而不显示转义字符供以后使用。有谁能向我解释一下为什么会发生这种情况,或者我在python3中需要做些什么才能正常解析邮件的正文?

感谢您的时间,任何正确的指导方向将不胜感激!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49665
文章 [ 1 ]  |  最新文章 6 年前