java - 无法使用Java读取电子邮件内容

标签 java email

Properties props = new Properties();
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getInstance(props, null);
Store store = session.getStore();
store.connect("imap.gmail.com", "xxx", "xxx");
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
Message[] messages = inbox.getMessages();
for (int i = messages.length;i>=0; i--) {
Message message =messages[i];

System.out.println("Text: " + message.getContent().toString());
}

我能够阅读电子邮件,并且我正在尝试获取每封电子邮件的电子邮件内容。但是 getContent 方法返回垃圾值,例如:(Text:javax.mail.internet.MimeMultipart@17ff24f)。 如何获取完整的电子邮件内容。请帮忙。

最佳答案

message.getContent() 的调用不会返回“垃圾值”,它只是返回无法直接转换为 String 值的内容。

那是因为它是类 MimeMultipart 的对象。这意味着您正在阅读的电子邮件由多个“部分”组成。您可以将 message.getContent() 的结果向下转换为 MimeMultipart 变量并对其进行分析:

MimeMultipart multipart = (MimeMultipart) message.getContent();
System.out.println("This message consists of " + multipart.getCount() + " parts");
for (int i = 0; i < multipart.getCount(); i++) {
    // Note we're downcasting here, MimeBodyPart is the only subclass
    // of BodyPart available in the Java EE spec.
    MimeBodyPart bodyPart = (MimeBodyPart) multipart.getBodyPart(i); 

    System.out.println("Part " + i + " has type " + bodyPart.getContentType());
    System.out.println("Part " + i " + has filename " + bodyPart.getFileName()); // if it was an attachment
    // So on, so forth.
}

请参阅Javadoc of MimeBodyPart有关如何分析消息各部分的详细信息。

关于java - 无法使用Java读取电子邮件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32004684/

相关文章:

java - 从不同包中的不同类访问变量?

java - XML 的 Swing GUI 生成器

java - 如何在 hibernate 中将我的 blob 列从 mysql 读取为字符串类型

Java 首选项本地安全存储

php - mailgun - 发送带有附件的邮件

ios - 复制 iOS 邮件应用程序的撰写功能的样式

java - RSA - 客户端(在服务器上下文中)如何加密/解密传入数据?

regex - 删除电子邮件模式,使用 grep、awk 或 sed 保留其余模式?

email - 如何在 AWS 上配置电子邮件帐户,例如 support@xyz.com 或 feedback@xyz.com

html - 字体在旧设备和平台上不一致,设计元素有时会损坏