2016-07-27 10 views
1

最近、Googleは「従来の」アップロード機能を無効にしていましたので、Google users()。PythonのGmail APIを使用して大量のメールを送信

しかし、5MBを超えるものでは動作しません。私は、PHPでそれを行う方法についてはwwwについて1つの投稿を見ましたが、Pythonでは何も見つかりませんでした。

http  = #My login routine 
service  = build('gmail','v1',http=http) 
email  = {'raw':base64.urlsafe_b64encode(message)} 
reply  = (service.users().messages().send(userId=user,body=email).execute()) 

Googleが豊富なドキュメントを持っている、ではなく、Pythonで大規模な電子メールを送信するために、特定の能力に:

は、ここに私の既存のコードです。このページでは実際には:

https://developers.google.com/gmail/api/v1/reference/users/messages/send

彼らは35メガバイトと同じ大きさのメッセージを送信するために、ベースAPIを使用してについて話すが、それは単に動作しません。私は "ResponseNotReady()"エラーを受け取ります。

チャンクされたアップロード、再開可能なアップロードについて読んできましたが、何も達成されていません。

そこにはどんな考えがありますか?

+0

私は同じ問題[2年前](http://stackoverflow.com/questions/24908700/mail-attachment-wrong-media-type-gmail-api/24957873#24957873)を持っていました。公式のクライアントライブラリの外側にあります(答えの最後にある編集を参照)。つまり、メッセージをエンコードしないで、簡単なアップロードURLをContent-Type 'message/rfc822'で代わりに使用してください。 – Tholle

+0

PythonからURLフォーマットを行うことができると思っていますか? – AaronF

答えて

0

私は同じ問題two years agoを持っていました。大きな添付ファイルでメッセージを送信する唯一の方法は、公式のクライアントライブラリを迂回することです。

これは代わりrequestsライブラリを使用した例である。

url = 'https://www.googleapis.com/gmail/v1/users/me/messages/send?uploadType=multipart' 
headers = { 
    'Authorization': 'Bearer ' + accessToken, 
    'Content-Type': 'message/rfc822' 
} 
requests.post(url, headers=headers, payload=message) 

メッセージが符号化されません。私はあなたがサービスオブジェクトからアクセストークンを抽出することができると思うが、私は正確な方法はわからない。

+0

要求ライブラリからネイティブのHTTPSConnectionオブジェクトへの変換は考えられますか?私は別のライブラリをインストールするのは嫌です...それは管理する別のライブラリですが、それが利益だとは思います。 – AaronF

+0

@AaronF私は通常、下位レベルのリクエストライブラリを使ってばかげた間違いをしています。だから私は助けになるとは思わないでしょう。 – Tholle

+0

ハァー、私はあなたが意味することを知っています。とにかく、ありがとう :) – AaronF

関連する問題