2017-08-23 8 views
1

GmailのApi経由で送信しようとしています。添付ファイルが5MBを超えるメールを休みます。これを達成するために、再開可能なアップロードで送信しようとしています。これは私のコードです。Gmail Api再開可能なアップロード残り(添付ファイルが5MBを超えています)

byte[] ba = System.IO.File.ReadAllBytes(uploadFromPath); 
String base64String = Convert.ToBase64String(ba); 
string url = "https://www.googleapis.com/upload/gmail/v1/users/me/messages/send?uploadType=resumable" 
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; 
request.Headers.Add("Authorization", "Bearer " + token); 
request.Headers.Add("X-Upload-Content-Type", "message/rfc822"); 
request.Headers["X-Upload-Content-Length"]= base64String.Length.ToString(); 
request.Method = "POST"; 
request.ContentType = "application/json"; 
request.ContentLength = body.Length; 

私は場所に

location = res.Headers["Location"]; 

を取得していますし、その後、私は場所とPUT要求を行う要求を行った後。

最初のリクエストボディに何を挿入すればよいのか、2番目のリクエスト内に何を入れるべきかを知りたいと思います。 私はこのポストを見たことがありますAttaching a file using Resumable upload w/ Gmail API しかし、このコードは5MBより小さいファイルに対してのみ機能しました。 5MBを超えるアチチュメントを達成するために何かすべきことはありますか?

答えて

0

実際にはUpload Attachment文書のサンプルがあります。

ステップ1:再開可能セッションを開始 再開可能セッション開始要求

POST /upload/gmail/v1/users/userId/messages/send?uploadType=resumable HTTP/1.1 
Host: www.googleapis.com 
Authorization: Bearer your_auth_token 
Content-Length: 38 
Content-Type: application/json; charset=UTF-8 
X-Upload-Content-Type: message/rfc822 
X-Upload-Content-Length: 2000000 

{ 
    "id": string, 
    "threadId": string, 
    "labelIds": [ 
    string 
    ], 
    "snippet": string, 
    "historyId": unsigned long, 
    "payload": { 
    "partId": string, 
    "mimeType": string, 
    "filename": string, 
    "headers": [ 
     { 
     "name": string, 
     "value": string 
     } 
    ], 
    "body": users.messages.attachments Resource, 
    "parts": [ 
     (MessagePart) 
    ] 
    }, 
    "sizeEstimate": integer, 
    "raw": bytes 
} 

ステップ2:ステップ3

HTTP/1.1 200 OK 
Location: https://www.googleapis.com/upload/gmail/v1/users/userId/messages/send?uploadType=resumable&upload_id=xa298sd_sdlkj2 
Content-Length: 0 

URI再開可能セッションの保存:ファイルをアップロード

PUT https://www.googleapis.com/upload/gmail/v1/users/userId/messages/send?uploadType=resumable&upload_id=xa298sd_sdlkj2 HTTP/1.1 
Content-Length: 2000000 
Content-Type: message/rfc822 

bytes 0-1999999 
+0

ペイロードのボディとパーツを初期化するにはどうすればよいですか?ペイロード本体の中に、添付ファイルのデータを設定すると、httpボディが大きくなりすぎて、不正なリクエストエラーが発生します。初期化されたHTTPボディの実際の例はありますか?さらに3段目のPUTリクエストの内部で、base64で変換された添付ファイルバイトのみを入力しますか? @noogui – kostas

関連する問題