5
我正在將Gmail API合併到我正在製作的程序中,並且出現一個我沒有的錯誤能夠解決/我無法找到在線答案。相關的代碼是下面,以及該錯誤:來自代碼示例的Gmail API錯誤 - 需要類似字節的對象,而不是'str'
from apiclient import discovery
from httplib2 import Http
from oauth2client import file, client, tools
import base64
from email.mime.audio import MIMEAudio
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import mimetypes
import os
def create_message(sender, to, subject, message_text):
message = MIMEText(message_text)
message['to'] = to
message['from'] = sender
message['subject'] = subject
return {'raw': base64.urlsafe_b64encode(message.as_string())}
def send_message(service, user_id, message):
message = (service.users().messages().send(userId=user_id, body=message).execute())
print('Message Id: %s' % message['id'])
return message
def send_email(orders):
SCOPES = 'https://mail.google.com/'
store = file.Storage('gmail.json')
creds = store.get()
if not creds or creds.invalid:
flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
creds = tools.run_flow(flow, store)
service = discovery.build('gmail','v1',http=creds.authorize(Http()))
message_text = orders[0]
created_message = create_message('from','to','subject', message_text)
send_message(service, 'from', created_message)
send_email(['TEST'])
Traceback (most recent call last):
File "test_email.py", line 50, in <module>
schoolPing(['TEST'])
File "test_email.py", line 47, in schoolPing
created_message = create_message('from','to','subject', message_text)
File "test_email.py", line 27, in create_message
return {'raw': base64.urlsafe_b64encode(message.as_string())}
File "/Users/Andre/anaconda/lib/python3.5/base64.py", line 119, in urlsafe_b64encode
return b64encode(s).translate(_urlsafe_encode_translation)
File "/Users/Andre/anaconda/lib/python3.5/base64.py", line 59, in b64encode
encoded = binascii.b2a_base64(s)[:-1]
TypeError: a bytes-like object is required, not 'str'
我得到相同的錯誤。似乎是一個python 3問題。 – fatman13