4

I used Python's imaplib to pull mail from a gmail account... but I got an email with this confusing text body:

> RGF0ZSBldCBoZXVyZTogICAgICAgICAgICAgICAgICAgICAgICAgICAyMi8wOC8yMDEwIDE0
> OjMzOjAzIEdNVCBVbmtub3duDQpQcsOpbm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICAgICAgamFjaW50bw0KTm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
> ICAgICBjYXJ2YWxobw0KRS1NYWlsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg

who can help me to read this file from my email...

Thx

lo

4

3 回答 3

14

It looks like base64. In Python you can either use base64.b64decode or str.decode('base64').

message = '''
RGF0ZSBldCBoZXVyZTogICAgICAgICAgICAgICAgICAgICAgICAgICAyMi8wOC8yMDEwIDE0
OjMzOjAzIEdNVCBVbmtub3duDQpQcsOpbm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgamFjaW50bw0KTm9tOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXJ2YWxobw0KRS1NYWlsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
'''

print message.decode('base64')

Result:

Date et heure:                           22/08/2010 14:33:03 GMT Unknown
Prénom:                                   jacinto
Nom:                                     carvalho
E-Mail:

The é looks like it is incorrect. It appears that the text was encoded in UTF-8, so you also need to decode the UTF-8 encoding:

print message.decode('base64').decode('utf-8')

Result:

...
Prénom:
...

One other thing to be aware of is that there are different variants of Base64 encodings that differ in the two symbols they use for value 62 and 63. Using base64.b64decode you can specify these two characters if the defaults don't work for you.

于 2010-08-22T18:49:11.067 回答
1

马克大部分是正确的,但它也是 UTF-8 编码的,如\uc3a9“Prénom”中的证明。

(而且我试图弄清楚为什么我得到了正确的解码而 Mark 没有得到相同的代码,但这是另一个问题。)

于 2010-08-22T19:04:43.260 回答
1

它是 Base-64 UTF-8。这段特殊的文字说:

Date et heure:                           22/08/2010 14:33:03 GMT Unknown
Prénom:                                   jacinto
Nom:                                     carvalho
E-Mail:                                
于 2010-08-22T19:07:22.190 回答