2015-07-21 101 views
1

我正在使用Gmail API導入郵件,並且我注意到 以下問題。目前,我做一個POST到這個網址:如何將大郵件上傳到Gmail

https://www.googleapis.com/gmail/v1/users/me/messages?uploadType=multipart

下面的HTTP標頭設置:

Content-Length: <n> 
Content-Type: application/json 

張貼的JSON數據是這樣的:

{ 
"labelIds": ["Label_154"], 
"raw": "RnJvbTo..." 
} 

(中原始數據當然是一個更大的基於64位編碼的RFC-822消息)

這可以工作,但對於一個客戶,他們在 某些消息上獲得http 413錯誤,我認爲這意味着消息太大。我有 尚未發現實際消息有多大。我已經看到了一些文件 ,說我應該使用這個網址來代替:

https://www.googleapis.com/upload/gmail/v1/users/me/messages?uploadType=multipart

但隨後的API抱怨是不支持JSON,我應該使用 內容類型的消息/ RFC822。我希望繼續使用json和原始編碼數據,因此我不必對我的代碼進行實質性更改。 你能告訴我這個方法的實際消息大小限制是什麼, ,有沒有辦法使用不同的端點達到35mb的限制?

回答

1

對於大於幾MB的任何內容,最好使用媒體(/ upload)路徑。是的,只接受電子郵件(message/rfc822有效載荷)。希望不要太難改變代碼。由於您必須將base64(message/rfc822)發送到現有的JSON端點,因此您可以停止執行消息的base64,然後將其封裝在JSON中。

如果您使用/上傳端點,您將能夠一直髮送消息直至最大gmail消息大小(25MB,base64編碼後可能高達34MB)。

+0

謝謝。我將如何指定將消息分配給哪個標籤,就像我現在使用json「LabelIds」字段所做的那樣? –

+2

我相信我現在有這個工作了......我將頂級Content-Type設置爲multipart/related,然後包含Content-Type application/json的單個消息部分,並將其值設置爲已創建的json部分。 –