使用Gmail API时发生BrokenPipeError

2024-09-30 06:12:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Gmail API发送一封带有Python3附件的电子邮件。 我正在尝试与google开发者相同的代码,如下所示:

https://developers.google.com/gmail/api/guides/sending

问题是,当附件4.2KB2.6MB时,代码运行良好;但当附件3.0MB9.6MB或更大时,会发生错误

Traceback (most recent call last):
  File "quickstart2.py", line 184, in <module>
    main()
  File "quickstart2.py", line 170, in main
    send_message(service, "me", message)
  File "quickstart2.py", line 147, in send_message
    message = (service.users().messages().send(userId=user_id, body=message).execute())
  File "/home/yizhu/anaconda3/lib/python3.6/site-packages/oauth2client/_helpers.py", line 133, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "/home/yizhu/anaconda3/lib/python3.6/site-packages/googleapiclient/http.py", line 837, in execute
    method=str(self.method), body=self.body, headers=self.headers)
  File "/home/yizhu/anaconda3/lib/python3.6/site-packages/googleapiclient/http.py", line 176, in _retry_request
    raise exception
  File "/home/yizhu/anaconda3/lib/python3.6/site-packages/googleapiclient/http.py", line 163, in _retry_request
    resp, content = http.request(uri, method, *args, **kwargs)
  File "/home/yizhu/anaconda3/lib/python3.6/site-packages/oauth2client/transport.py", line 175, in new_request
    redirections, connection_type)
  File "/home/yizhu/anaconda3/lib/python3.6/site-packages/oauth2client/transport.py", line 282, in request
    connection_type=connection_type)
  File "/home/yizhu/anaconda3/lib/python3.6/site-packages/httplib2/__init__.py", line 1322, in request
    (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
  File "/home/yizhu/anaconda3/lib/python3.6/site-packages/httplib2/__init__.py", line 1072, in _request
    (response, content) = self._conn_request(conn, request_uri, method, body, headers)
  File "/home/yizhu/anaconda3/lib/python3.6/site-packages/httplib2/__init__.py", line 996, in _conn_request
    conn.request(method, request_uri, body, headers)
  File "/home/yizhu/anaconda3/lib/python3.6/http/client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/home/yizhu/anaconda3/lib/python3.6/http/client.py", line 1285, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/home/yizhu/anaconda3/lib/python3.6/http/client.py", line 1234, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/home/yizhu/anaconda3/lib/python3.6/http/client.py", line 1065, in _send_output
    self.send(chunk)
  File "/home/yizhu/anaconda3/lib/python3.6/http/client.py", line 986, in send
    self.sock.sendall(data)
  File "/home/yizhu/anaconda3/lib/python3.6/ssl.py", line 972, in sendall
    v = self.send(byte_view[count:])
  File "/home/yizhu/anaconda3/lib/python3.6/ssl.py", line 941, in send
    return self._sslobj.write(data)
  File "/home/yizhu/anaconda3/lib/python3.6/ssl.py", line 642, in write
    return self._sslobj.write(data)
BrokenPipeError: [Errno 32] Broken pipe

有什么问题吗?在

谢谢


Tags: inpyselfsendhttphomerequestlib
1条回答
网友
1楼 · 发布于 2024-09-30 06:12:01

似乎在“重试”请求时引发了异常。 我自己还没有遇到过这个错误,但是github上有一个线程在讨论同样的错误。 https://github.com/google/google-api-python-client/issues/218

尝试使用httplib2shim,似乎oauth2client仍然没有被googleauth取代。在

我发现的另一个建议是对超过10MB的文件使用MEDIA/upload选项。有关如何使用/上载的文档:https://developers.google.com/gmail/api/v1/reference/users/messages/send

相关问题 更多 >

    热门问题