【发布时间】:2015-05-04 15:19:03
【问题描述】:
我正在尝试编写一个简单的代码来读取来自 gmail 收件箱的消息。 我找到了一些例子,但没有一个是有效的。 最有希望的是我在 CompilatimEerror.com 上找到的代码,但无论我尝试什么,都会收到此错误:
java.lang.ClassCastException: java.lang.String cannot be cast to javax.mail.Multipart
这是我的代码:
import java.util.*;
import javax.mail.*;
public class ReadingEmail {
public static void main(String[] args) {
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", "yourEmailId@gmail.com","password");
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
Message msg = inbox.getMessage(inbox.getMessageCount());
Address[] in = msg.getFrom();
for (Address address : in) {
System.out.println("FROM:" + address.toString());
}
Multipart mp = (Multipart) msg.getContent(); // here it breaks
BodyPart bp = mp.getBodyPart(0);
System.out.println("SENT DATE:" + msg.getSentDate());
System.out.println("SUBJECT:" + msg.getSubject());
System.out.println("CONTENT:" + bp.getContent());
} catch (Exception mex) {
mex.printStackTrace();
}
}
}
没有连接错误,因为它获取了主题、日期和所有这些内容,但电子邮件正文是个谜。不会有附件,我只会收到简单的邮件(这是更大项目的一部分)
我正在寻找的是阅读未读邮件(然后删除此邮件,因此收件箱将永久为空(垃圾邮件将被手动删除))。 我缺乏关于网络编程/结构的知识,所有那些流行音乐、imaps 和东西都是空白。 另外请记住,我是一名新手程序员,这是我第一次带着我的代码离开我的计算机,不幸的是直接进入协议/身份验证/从互联网获取东西的问题。
我浏览了很多页面,但从未找到可以让我自己创建它的解释......
【问题讨论】:
-
您遇到的错误是什么。
-
java.lang.ClassCastException: java.lang.String 无法转换为 javax.mail.Multipart
-
有时你应该用谷歌搜索你得到的错误/异常。如果以下链接对您有帮助,请告诉我们。简而言之:“您的消息内容 [is] 返回 String,您正在尝试将类型转换为 Multipart” stackoverflow.com/questions/23116465/…
-
对我来说,它只是说明了异常的含义。我不能将原本是字符串的主体转换为?Multipart?我尝试在代码中没有提到多部分的情况下将 body 转换为 (String),但这不起作用。
-
我终于解决了。可悲的是,在这件事上没有太多帮助。
标签: java email gmail jakarta-mail inbox