2

MIME 以外の message.get メソッドを使用して、本文/データを取り出し、それをデコードして、単にメッセージを英語で表示しようとしています。私が抱えている問題は、一部のメッセージが正常にデコードされた後、突然間違ったパディングの問題が発生することです。+ と / を置き換えてみましたが、うまくいきませんでした。

なぜこれが起こるのでしょうか?どうすれば修正できますか?

これが私のmessages.getメソッドです:

try:
message = service.users().messages().get(userId=user_id, id=msg_id).execute()

# Pull Raw Message Body from Response
message_raw = message['payload']['parts'][0]['body']['data']

# Decode the raw message
message_decoded = base64.b64decode(message_raw)

# Print the messages
print message_decoded

アップデート

サービス

gmail_service = build('gmail', 'v1', http=http)

トレースバック エラー

Traceback (most recent call last):
File "gmail.py", line 166, in <module>
GetMessage(gmail_service, 'me', message_id)
File "gmail.py", line 155, in GetMessage
message_decoded = base64.b64decode(message_raw)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/base64.py",        line 76, in b64decode
raise TypeError(msg)
TypeError: Incorrect padding

urlsafe 使用時のトレースバック エラー

Traceback (most recent call last):
File "gmail.py", line 166, in <module>
GetMessage(gmail_service, 'me', message_id)
File "gmail.py", line 155, in GetMessage
message_decoded = base64.urlsafe_b64decode(message_raw)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/base64.py", line 112, in urlsafe_b64decode
return b64decode(s, '-_')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/base64.py", line 71, in b64decode
s = _translate(s, {altchars[0]: '+', altchars[1]: '/'})
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/base64.py", line 36, in _translate
return s.translate(''.join(translation)) 
TypeError: character mapping must return integer, None or unicode
4

1 に答える 1

11

以下を使用する必要があります。

message_decoded = base64.urlsafe_b64decode(message_raw)

生のメッセージは URLSafe base64 でエンコードされているためです。

于 2014-07-13T19:20:35.743 に答える