【问题标题】:View message as HTML?以 HTML 格式查看消息?
【发布时间】:2014-08-18 20:48:49
【问题描述】:

Gmail API 目前似乎将邮件和邮件正文作为 MIME 返回。是否可以以纯文本或 HTML 格式返回?如果没有,我有没有办法打开获取的消息并以与我使用 SMTP 的方式等效的方式查看它?

for (Message message : messages) {
            String messageId = message.getId();
            Message m = service.users().messages().get(userId, messageId).setFormat("full").execute();
            System.out.println("Message toString(): " + m.toString());
            System.out.println("Message getRaw(): "  + m.getRaw());
            System.out.println("Message getPayload().toString(): " + m.getPayload().toString());
            System.out.println("Message getPayload().getBody().getData(): " + m.getPayload().getBody().getData());
            System.out.println("Message getSnippet: " + m.getSnippet());

        }
  1. toString() 返回 MIME 格式(我相信?)
  2. getRaw() 返回 null
  3. getPayload() 返回 toString() 的一部分?
  4. getPayload().getBody().getData() 返回 null
  5. getSnippet 返回消息的明文 sn-p

Gmail 大佬,如果我想正确查看,哪一个最有用?我假设 toString()。另外,您具体指的是哪个 Java MIME 库?我找到的库都提到了如何确定你的 MIME 类型。

【问题讨论】:

  • 很高兴您得到了答案。 :)

标签: email gmail mime gmail-api


【解决方案1】:

您可以使用 format=RAW 发出 message.get 请求,并在返回类型的 Message.raw 字段中将整个电子邮件作为一个大的 RFC 2822 字符串(并使用 java MIME 库对其进行解析)

或者(在你的情况下可能更好)

您可以使用 format=FULL 发出 message.get 请求,并在 message.payload 字段中获取已解析的消息,该字段将是电子邮件部分的树,您可以遍历这些部分以查找 text/html、text/普通部分、附件、其他部分等。MIME 格式的电子邮件(包含多个部分的任何内容)是一种树结构等。

【讨论】:

  • 您指的是哪个 Java MIME 库?我还添加了一些代码和输出,以帮助您更好地了解我的情况。感谢您使用 gmail-api 标签!
  • 当 payload.mimeType 类似于“multipart”时,您可能想查看 payload.parts。每个 payload.part 本身可以有一个主体甚至更多部分,因此是树。因此,您需要(例如递归地)遍历该树结构以查找您关心的部分(例如“text/html”或“text/plain”部分)。 MIME 有点复杂,但就是这样。如果您确实想直接处理 format=RAW 内容,javax.mail 包是 java Mime 解析的常用包。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-09
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-11
相关资源
最近更新 更多