面临着解码主题中的UTF-8?B?ZnVjayDwn5CO?=!类型的问题。使用IMAP和Python

问题描述 投票:0回答:1

需要得到真正的字符串,而不是那个编码的字符串。很少有科目是正确的字符串格式,但很少有科目是这种编码格式,我不知道如何解决。

如何对字符串进行解码,并打印科目的解码部分?


FROM_EMAIL  = "[email protected]"
FROM_PWD    = "my Password"
SMTP_SERVER = "imap.gmail.com"
SMTP_PORT   = 993
l=['Developer','Architect','NEED','Internship','Urgent']
def get_body(msg):
    if msg.is_multipart():
        return get_body(msg.get_payload(0))
    else:
        return msg.get_payload(None,True)
def readmail():
    mail = imaplib.IMAP4_SSL(SMTP_SERVER)
    mail.login(FROM_EMAIL,FROM_PWD)
    mail.select('inbox')
    type, data = mail.search(None, '(SINCE "20-May-2020" BEFORE "26-May-2020")')
    mail_ids = data[0]
    id_list = mail_ids.split()
    id_list=id_list[::-1]
    first_email_id = id_list[0]
    latest_email_id = id_list[-1]
    for byte_obj in id_list:
        typ, data = mail.fetch(byte_obj, '(RFC822)' )
        raw=email.message_from_bytes(data[0][1])
        msg=get_body(raw)
        s='' 

        s=raw['SUBJECT']
        s1=raw['Date']
        print(s)
readmail()

输出。

Winner announcement!  Amazon Kindle Oasis.

[FREE WEBINAR] Natural Language Processing for Beginners

Godrej 24 | Get Rs. 2 Lakh Gold Voucher | 2 & 3 BHK at Rs. 83 Lakh*

=?UTF-8?B?TGFzdCBkYXkgdG8gc2F2ZSEgUG9wdWxhciBjb3Vyc2VzIGFzIGw=?=
        =?UTF-8?B?b3cgYXMg4oK5NDU1?=

Panda just uploaded a video

Vernix Gamerz just uploaded a video
python python-3.x email gmail imap
1个回答
0
投票

你的大部分问题已经在这里得到了解答。

查找、解码和替换文本文件中的所有base64值

为了更好地理解你的例子,我有一些补充信息。

你的部分主题行被编码成了... base64-格式。

采取以下方式 一部分 你的字符串 s=raw['SUBJECT'] 为例

=?UTF-8?B?TGFzdCBkYXkgdG8gc2F2ZSEgUG9wdWxhciBjb3Vyc2VzIGFzIGw=?= =?UTF-8?B?b3cgYXMg4oK5NDU1?=

其结构如下。

首先是..:

?UTF-8?B?

然后是编码的字符串

TGFzdCBkYXkgdG8gc2F2ZSEgUG9wdWxhciBjb3Vyc2VzIGFzIGw

后面是...

=?

将编码的字符串从 base64UTF-8 给你文本。

Last day to save! Popular courses as l

你可以通过以下方式验证 https:/www.base64decode.org

© www.soinside.com 2019 - 2024. All rights reserved.