2014-06-27 45 views
0

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

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返回消息

Gmail的家伙,如果我愿意以正确查看哪一个是最有用的明文片断?我假设toString()。另外,你指的是哪个Java MIME库?我发现的库都提及如何确定您的MIME类型。

+0

显示一些代码! –

+0

它现在在那里:) –

+0

我很高兴你有你的答案。 :) –

回答

2

你可以用FORMAT = RAW您message.get请求,并得到整个电子邮件作为一个大的RFC 2822字符串中的返回类型的Message.raw场(和使用Java MIME库解析它)

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

你可以让你的message.get请求格式= FULL,并在message.payload字段中获得一个解析的消息,这将是你可以走过的电子邮件的部分树以查找文本/ html,文本/纯文本部分,附件,其他部分等。MIME格式的电子邮件(具有多个部分的任何东西)是树结构等。

+0

你指的是哪个Java MIME库?我还添加了一些代码和输出以帮助您更好地了解我的情况。并感谢您坐在gmail-api标签上! –

+0

当payload.mimeType类似“multipart”时,您可能需要查看payload.parts。每个有效载荷部分本身可以有一个主体或甚至更多的部分,因此树。因此,您需要(例如递归)遍历该树结构来寻找您关心的部分(例如“text/html”或“text/plain”部分)。 MIME有点复杂,但事实就是如此。 如果您想要直接处理format = RAW内容,javax.mail包是java Mime解析的常用包之一。 –