2015-11-03 29 views
1

導入的消息與Gmail的API研究了這個頁面: https://developers.google.com/gmail/api/v1/reference/users/messages/import我如何在Java中

我有一些消息,我會在我的Android程序中保持的軌道。我會保持我將要刪除的消息的記錄,我想定爲刪除這些郵件導入到一個新的文件夾(在Gmail中API文件夾被稱爲標籤)。

我試圖測試形式:

  POST https://www.googleapis.com/gmail/v1/users/omitted%40gmail.com/messages/import?deleted=false&internalDateSource=dateHeader&neverMarkSpam=true&processForCalendar=false&key={YOUR_API_KEY} 
      { 
      "payload": { 
       "body": { 
       "data": "hellio" 
       } 
      } 
      } 

響應:

 400 OK 
     - SHOW HEADERS - 
     { 
     "error": { 
      "errors": [ 
      { 
      "domain": "global", 
      "reason": "invalidArgument", 
      "message": "'raw' RFC822 payload message string or uploading message via /upload/* URL required" 
      } 
      ], 
      "code": 400, 
      "message": "'raw' RFC822 payload message string or uploading message via /upload/* URL required" 
     } 
     } 

有發送請求的問題,但我不知道在所有這意味着什麼。我需要的是一些發送請求的Java,它將導入一條消息,我可以指定正文,收到日期和主題行。可能嗎?

謝謝。

P.S.我只是想刪除附件不整的消息,但讀的Gmail API文件後,看起來這是不可能的,只能通過IMAP。我問這個問題的原因是,我不必將整個程序移動到IMAP。

回答

1

您是非常接近你的代碼。你需要做的是寫兼容的RFC 2822 standard郵件和Base64編碼所述郵件並插入之前它安全網址(替換所有+-和所有/_)。

您是在Java的比我好,但如果我會做瀏覽器的開發者控制檯一個正確的消息,它可能是這個樣子:

var encodedMail = btoa(
    "Date: Thu, 1 Jan 1970 12:00:00 -0000\n" + 
    "From: [email protected]\n" + 
    "To: [email protected]\n" + 
    "Subject: Example Subject\n\n" + 

    "This is the body of the mail" 
).replace(/\+/g, '-').replace(/\//g, '_'); 

然後我插入這個郵件有相同的請求你發出:

POST https://www.googleapis.com/gmail/v1/users/me/messages?internalDateSource=dateHeader&key={YOUR_API_KEY} 

{ 
"raw": "RGF0ZTogVGh1LCAxIEphbiAxOTcwIDEyOjAwOjAwIC0wMDAwCkZyb206IGVtdGhvbGluQGdtYWlsLmNvbQpUbzogZW10aG9saW5AZ21haWwuY29tClN1YmplY3Q6IEV4YW1wbGUgU3ViamVjdAoKVGhpcyBpcyB0aGUgYm9keSBvZiB0aGUgbWFpbA==" 
} 

正如你所看到的,這工作得很好!

enter image description here