0
我试图使用Gmail API创建Gmail草稿。部署失败后创建Gmail草稿
在开发中它可以很好地工作,但是当我部署它时,我收到一条错误消息。
POST http://myapp.appspot.com/emailDoc 500 (Internal Server Error)
这是我的瓶路由功能看起来像:
# Flask Route
@app.route('/emailDoc', methods=["POST"])
def emailDoc():
# Get Oauth2 Credentials
credentials = Credentials().get_by_id('tokens')
if not authcheck(credentials):
return 'error'
# Create ReportLab PDF
buff = StringIO()
doc = SimpleDocTemplate(buff, pagesize=A4,
rightMargin=1.25*cm,leftMargin=1.25*cm,
topMargin=1.25*cm,bottomMargin=1.25*cm)
doc.build(genpdf(data))
# Create Email Message
message = MIMEMultipart()
message['to'] = [email protected]
message['from'] = 'me'
message['subject'] = 'Hello'
messageBody = MIMEText("Hello Wolrd")
messageFile = MIMEBase('application', 'pdf')
messageFile.set_payload(str(buff.getvalue()))
messageFile.add_header('Content-Disposition', 'attachment', filename='document.pdf')
message.attach(messageBody)
message.attach(messageFile)
# Oauth2 Flow
access_token = credentials.access_token
flow = AccessTokenCredentials(access_token, 'myapp')
http = flow.authorize(httplib2.Http())
# HTTP Request
obj = http.request(
uri='https://www.googleapis.com/gmail/v1/users/me/drafts',
method='POST',
body={
'message': {
'raw':base64.urlsafe_b64encode(message.as_string())
}
},
headers={'content-type':'application/json'}
)[1]
return obj
这是错误消息我在谷歌开发者控制台登录选项卡搞定。
Exception on /emailDoc [POST]
Traceback (most recent call last):
File "/base/data/home/apps/s~admin-app/1.388311669567787470/lib/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/base/data/home/apps/s~admin-app/1.388311669567787470/lib/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/base/data/home/apps/s~admin-app/1.388311669567787470/lib/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/base/data/home/apps/s~admin-app/1.388311669567787470/lib/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/base/data/home/apps/s~admin-app/1.388311669567787470/lib/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/base/data/home/apps/s~admin-app/1.388311669567787470/main.py", line 471, in emailDoc
headers={'content-type':'application/json'}
File "/base/data/home/apps/s~admin-app/1.388311669567787470/lib/oauth2client/client.py", line 589, in new_request
redirections, connection_type)
File "/base/data/home/apps/s~admin-app/1.388311669567787470/lib/httplib2/__init__.py", line 1593, in request
(response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
File "/base/data/home/apps/s~admin-app/1.388311669567787470/lib/httplib2/__init__.py", line 1335, in _request
(response, content) = self._conn_request(conn, request_uri, method, body, headers)
File "/base/data/home/apps/s~admin-app/1.388311669567787470/lib/httplib2/__init__.py", line 1291, in _conn_request
response = conn.getresponse()
File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/gae_override/httplib.py", line 522, in getresponse
**extra_kwargs)
File "/base/data/home/apps/s~admin-app/1.388311669567787470/lib/httplib2/__init__.py", line 1091, in fixed_fetch
validate_certificate=validate_certificate)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/urlfetch.py", line 270, in fetch
allow_truncated, follow_redirects, validate_certificate)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/urlfetch.py", line 326, in make_fetch_call
request.set_payload(payload)
File "cpp_message.pyx", line 124, in cpp_message.SetScalarAccessors.Setter (third_party/apphosting/python/protobuf/proto1/cpp_message.cc:2229)
TypeError: <type 'dict'> has type <type 'dict'>, but expected one of: str, unicode
谢谢你,这就是我最后到底在做什么。 –