2016-07-03 1 views
0

J'essaye de télécharger un email au compte de gmail en utilisant l'API REST de gmail pour l'importation du message https://developers.google.com/gmail/api/v1/reference/users/messages/import#http-request en utilisant le module de demandes de python. e-mail est au format RAW (à savoir les données de fichier .eml codé avec base64.b64encode()) avec le corpsgmail REST api 'message d'importation' avec les demandes python

POST https://www.googleapis.com/gmail/v1/users/me/messages/import 
{ 
"raw": ".........." 
} 

Cela fonctionne pour les données brutes taille jusqu'à quelques (disons 5MB Mo), mais je reçois ' Connection Timeout 'erreur si je tente de télécharger des données plus volumineuses (~ 10 Mo ou plus).

Quelqu'un peut-il me dire la manière de télécharger de plus grandes données de courrier électronique en utilisant cette API.

J'utilise access_token OAuth pour appeler ces API

Répondre

0

Essayez de régler les uploadType à resumable

Resumable upload

Pour télécharger plus fiable des fichiers de données, vous pouvez utiliser le resumable télécharger le protocole. Ce protocole vous permet de reprendre une opération de téléchargement après qu'un échec de communication a interrompu le flux de données. Il est particulièrement utile si vous transférez de gros fichiers et que la probabilité d'une interruption de réseau ou d'une autre erreur de transmission est élevée, par exemple, lors d'un téléchargement à partir d'une application client mobile. Il peut également réduire votre utilisation de la bande passante en cas de défaillance du réseau car vous n'avez pas besoin de redémarrer les téléchargements de fichiers volumineux depuis le début.

Exemple: Demande d'ouverture de session Reprise possible

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 
} 
+0

@ mr-rebot Merci pour l'exemple, je ne cherche pas à envoyer du courrier, mais essayer de restaurer/importer messagerie existant avec flux RAW EML. Lors de l'importation en utilisant/upload et uploadType = resumable), je reçois erreur comme {u'error ': {u'code': 400, u'message ': u "Attendu un seul' De 'en-tête", u' erreurs ': [{' udomain ': u'global', u'message ': u "Attendu un seul' De 'en-tête", u'raison': u'invalidArgument '}]}} –

+0

@ mr-rebot, J'ai essayé cet exemple (envoyer un mail). Il me renvoie une réponse vide avec le code d'état 200. J'attends une réponse comme ci-dessous mais devenant vide. c'est-à-dire aucun emplacement/session_uri en réponse. HTTP/1.1 200 OK Emplacement: https://www.googleapis.com/upload/gmail/v1/users/userId/messages/send?uploadType=resumable&upload_id=xa298sd_sdlkj2 Content-Length: 0 –