当前位置: 首页 > 面试题库 >

使用JavaMail从GMail阅读完整的电子邮件

柯子琪
2023-03-14
问题内容

我正在使用javamail,但无法从Gmail电子邮件中获取HTML。我有以下内容:

Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", "myemail@gmail.com", "password");
System.out.println(store);

Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
Message messages[] = inbox.getMessages();
for(Message message:messages) {
System.out.println(message); // com.sun.mail.imap.IMAPInputStream@cec0c5

上面所有方法都可以,但是我无法打印或获取实际的HTML或文本电子邮件。我只是得到某种InputStream,如何轻松处理以获得原始的电子邮件HTML?

我也尝试html" target="_blank">遍历消息,但这并没有使我走得太远:

Message message[] = inbox.getMessages();

    for (int i=0, n=message.length; i<n; i++) {
       System.out.println(i + ": " + message[i].getFrom()[0] 
         + "\t" + message[i].getSubject());
       String content = message[i].getContent().toString();
       if (content.length() > 200) 
    content = content.substring(0, 600);
       System.out.print(content);

}

谢谢大家的帮助。


问题答案:

InputStream对象包含电子邮件的正文。您需要阅读整个流,才能阅读整个消息。例如,该SO发布详细介绍了如何将整个写入InputStreamOutputStream诸如System.out使用Apache库。那是一个很好的起点,因为您可以将整个消息正文打印到控制台。否则,您将需要使用一些缓冲区等将数据从流中拉出,并将其放入要放入的任何内容中。另外,该SO帖子还使用相同的库详细说明了如何转换一个InputStream到一个String



 类似资料:
  • 问题内容: 我正在尝试在JavaMail API的帮助下通过IMAP访问来自Gmail帐户的电子邮件。我想知道为什么代码对一个电子邮件帐户有效,而对另一个电子邮件帐户无效。 我可以访问两个电子邮件帐户的文件夹。但是对于其中一个电子邮件帐户,无法访问其他文件夹,例如,它将引发异常。有人可以解释出什么问题了吗? 先感谢您。 这是代码: 问题答案: 是否有一个帐户使用非英语用户界面? Gmail文件夹名

  • 我正在使用JavaMail 1.4.1(我已经升级到1.4.5版本,但有同样的问题)从一个电子邮件帐户读取消息,但我在内容编码方面有问题: 一些消息被正确读取,但其他消息由于编码不合适而具有奇怪的字符。我意识到它不适用于特定的内容类型。 如果content entType是以下任何一个,它都能很好地工作: > 文本/普通;charset=ISO-8859-1 charset="iso-8859-1

  • 问题内容: 我正在使用JavaMail在Android应用程序中阅读邮件。我试图涵盖所有组合,即在“自定义服务器” /“ Gmail ID” /“ Live ID”上发送/接收的邮件。 从GMail WITH Attachment发送的某些邮件中出现问题。我可以收到附件,但是内容返回 这是用于接收和阅读消息的代码: 我对有问题的邮件的了解: 还返回名称,即以这种格式出现FirstName Last

  • 问题内容: 我有一个包含GUI的应用程序,它正在使用Javamail。当我打开它时,我必须在上看到发送到我的邮件的消息。 问题是当我编写代码时,它仅显示最后发送的消息。 如何在收件箱中显示所有新邮件? 这是我的代码: 问题答案: 您在以下消息循环中反复将的文本设置为相同的内容: 您应该使用所有消息构建一个,然后设置 然后,您可以通过使用增强的for循环并使用的方法使这一点更加清晰。

  • 背景: 我的gmail账户不是服务账户。我正在编写一个PHP CLI应用程序,用于检查来自特定发件人和特定主题的电子邮件。假设此应用程序用于自定义域,但不是GSuite的一部分。我无法在服务器范围内控制我们域的电子邮件。 我正在使用自己的来自Google API门户的Auth文件。我修改了Quickstart中的代码,根据我的查询获取电子邮件,并获取我需要的特定电子邮件。(快速入门示例中的用户是“

  • 问题内容: 现在我在这里 一些字母带有base64编码。怎么解码呢? base64.b64encode(some_string)-没有帮助 问题答案: **我没有写这个取自https://yuji.wordpress.com/2011/06/22/python-imaplib-imap-example- with-gmail/