android - 如何使用 Java 中的 Gmail API 导入邮件

标签 android gmail-api

我研究过这个页面: https://developers.google.com/gmail/api/v1/reference/users/messages/import

我有一些消息将在我的 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,它发送一个请求,该请求将导入一条消息,我可以在其中指定正文、接收日期和主题行。可能吗?

谢谢。

附言我只是想删除附件而不是整个邮件,但在阅读 Gmail API 文档后,它看起来是不可能的,只能通过 IMAP 实现。我问这个问题的原因是我不必将我的整个程序移动到 IMAP。

最佳答案

您的代码非常接近。你需要做的是写一封符合 RFC 2822 standard 的邮件。 , 和 Base64 编码表示邮件并使其 URL 安全(将所有 + 替换为 - 并将所有 / 替换为 _) 在插入之前。

你比我更擅长 Java,但如果我在浏览器的开发者控制台中做出正确的消息,它可能看起来像这样:

var encodedMail = btoa(
  "Date: Thu, 1 Jan 1970 12:00:00 -0000\n" +
  "From: emtholin@gmail.com\n" +
  "To: emtholin@gmail.com\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

关于android - 如何使用 Java 中的 Gmail API 导入邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33493292/

相关文章:

android - ScrollView 开始变低并裁剪内容

java - 如何将声音从 Android 设备流式传输到 Java 服务器?

java - Android - Activity 构造函数与 onCreate

python - 使用 gmail api 发送对现有邮件的回复不会在 gmail 收件箱中显示对话轨迹

android - WordPress插件inbuild表数据在android中获取

android - 从网络下载 Artifact 时,Gradle发生了错误

java - 使用 Java 的 API 将已删除的邮件插入 Gmail

javascript - 如何获取gmail用户的头像?

python - 使用 Gmail API 获取 Google 群组电子邮件

node.js - 在 Heroku 调度程序中使用 session