2017-01-26 5 views
1

Gmailの再開可能オプションを使用してメールに添付ファイルをアップロードしようとしています。ドキュメント参照:https://developers.google.com/gmail/api/guides/uploads#resumableGmail APIを使用した再開可能なアップロードを使用したファイルの添付

現在、私は再開可能なURIを使用してメールを送信できますが、添付ファイルはありません(郵便番号を使用)。ドキュメンテーションは、要求が具体的にどのように表示されるべきかについての非常に明確な例を提供せず、インターネットを精練した後に多くの例がないように見える。 -

Request URL: 
POST /upload/gmail/v1/users/me/messages/send?uploadType=resumable 
Host: www.googleapis.c om (can't post links so I interrupted the url) 

Headers: 
Authorization: Bearer my_token_here 
Content-Length: 113 
Content-Type: application/json 
X-Upload-Content-Length: 67 
X-Upload-Content-Type: message/rfc822 

Body: 
{"raw":"VG86IG5pcnZhbmEucm9ja2VyQGdtYWlsLmNvbQpTdWJqZWN0OiBUZXN0RW1haWxTdWJqZWN0MwoKTWVzc2FnZSBjb250ZW50cyAjMy4"} 

体がために、件名、および電子メールメッセージの内容が含まれる64ビットのエンコードされた文字列である

  1. 初期要求:

    私の要求は二つの部分です。それからgmailは空のボディと、次のような 'location'ヘッダーを返します:googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=resumable & upload_id = BRnB2UoAsKwzNMoQAy-JtmP6mu5agltqOWZ9uerI3k- KNTDJ73PWEjKuAHpko4RN6weSEysddH2kjj4G24uFw6E9oPv1XP69l7_KcmNuW-RAoz_5oS1T_4_E。 (このアカウントは投稿内に1つのリンクのみを持つことができるため、https://を削除しました)

    次に、ロケーションヘッダーに返されたURLへのPUTリクエストをフォローアップします。

    1. 第2の要求は、次のようになります

      Request URL: 
      PUT /upload/gmail/v1/users/me/messages/send?uploadType=resumable&upload_id=BRnB2UoAsKwzNMoQAy-JtmP6mu5agltqOWZ9uerI3k-KNTDJ73PWEjKuAHpko4RN6weSEysddH2kjj4G24uFw6E9oPv1XP69l7_KcmNuW-RAoz_5oS1T_4_E 
      Host: www.googleapis.c om 
      
      Headers: 
      Content-Length: 67 
      Content-Type: message/rfc822 
      
      Body: 
      {"raw":"VG86IG5pcnZhbmEucm9ja2VyQGdtYWlsLmNvbQpTdWJqZWN0OiBUZXN0RW1haWxTdWJqZWN0MwoKTWVzc2FnZSBjb250ZW50cyAjMy4"} 
      --- OR --- 
      I choose the binary option, and attach the file I am looking to upload via Postman. 
      

    私はこのような目的でGmailからの応答を受信:

    { 
         "id": "159d7ded3125e255", 
         "threadId": "159d7ded3125e255", 
         "labelIds": [ 
         "SENT" 
         ] 
        } 
    

    メールは正常に送信されますが、メールに添付ファイルはありません。 Gmailに元のメールを表示すると、添付ファイルのエビデンスはありません。オリジナルは次のようになります:

    Received: from 325276275830 named unknown by gmailapi.google.com with HTTPREST; Wed, 25 Jan 2017 15:03:33 -0800 
        To: [email protected] 
        Subject: TestEmailSubject3 
        Date: Wed, 25 Jan 2017 15:03:33 -0800 
        Message-Id: <[email protected]om> 
        From: [email protected] 
    
        Message contents #3. 
    

    何が欠けていますか?特定のコンテンツを別の方法でエンコードしたり、別の場所にデータを配置する必要がありますか?私は何の誤りもありません。私は数日間このことに取り組んできましたが、私はそれを理解できません。

+0

関連する[SO post](http://stackoverflow.com/a/31792244/5995040)のコードを試してみてください。これはマルチパートですが、添付ファイルの仕組みを理解するのに役立ちます。お役に立てれば。 –

+0

Mr Rebot - ありがとうございました。私はまだ実用的なソリューションに来ていない。私は、ファイルをアップロードし、それを正常にメールで送信する再開可能なリクエストを得ることができました。しかし、これは開始要求が空で、base64でエンコードされたファイルを含む次の要求で、完全に構成されたメッセージ/ rfc822 – halldr

+0

'Content-Type:multipart/mixed;境界= foo_bar_baz MIMEバージョン:1.0 to:[email protected] from:drew @ azuqua。com subject:添付ファイル付き - 再開アップロード --foo_bar_baz コンテンツタイプ:text/plain; charset = UTF-8 MIMEバージョン:1.0 コンテンツ転送エンコーディング:7bit これは電子メールメッセージです。 --foo_bar_baz のContent-Type:画像/ JPEG MIME-バージョン:1.0 コンテンツ転送 - エンコード:base64で コンテンツディスポジション:添付ファイル;ファイル名= BIG_PUPPY_PIC.jpg encoded_file_went_here_jkl4fliq43jga43gai --foo_bar_baz - ' – halldr

答えて

0

同じ問題が発生しました.Nodemailerを使用して添付ファイル付きのメールを作成し、結果をファイルに保存してからthisでアップロードしました。

関連する問題