我的代码连接到Gmail帐户并阅读收到的每封电子邮件。我检索电子邮件的内容。我使用javamail api。
当我从eclipse运行代码时,它的工作原理非常好。但是如果我将所有内容导出到一个jar文件然后从命令提示符运行,那么我会收到以下错误:
java.lang.ClassCastException: com.sun.mail.imap.IMAPInputStream cannot be cast to javax.mail.Multipart
在以下行中:
Multipart mp = (Multipart) msg.getContent();
我尝试过使用它,但它无济于事:
public static void main(String[] args) throws Exception {
System.out.println("Begin");
Thread.currentThread().setContextClassLoader(getOldIds.class.getClassLoader());
//read emails
}
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "imaps");
Session session = Session.getInstance(props, null);
Store store = session.getStore("imaps");
store.connect("imap.gmail.com", -1, "username", "password");
//fetch the message from the inbox
请建议我应该做些什么。
由于
答案 0 :(得分:1)
将此行添加到您的代码中: -
MimeMessage mimemsg = new MimeMessage(msg);
Multipart mp = (Multipart) mimemsg.getContent();
而不是: -
Multipart mp = (Multipart) msg.getContent();
在这里我可以安全地假设msg if com.sun.mail.imap.IMAPMessage
答案 1 :(得分:1)
如何将所有内容导出到jar文件中?
如果要将mail.jar文件中的所有应用程序类和所有JavaMail类组合到一个新的jar文件中,那么您将缺少从MIME类型配置映射的mail.jar文件中的资源文件到Java类。
您的应用程序类应该在一个jar文件中,并且该jar文件应该引用或使用JavaMail jar文件,例如,在应用程序运行时在CLASSPATH上。
答案 2 :(得分:0)
感谢大家的帮助......以下方法对我有用:
BufferedReader br = new BufferedReader( new InputStreamReader(msg.getInputStream()));
content="";
String line;
while((line=br.readLine())!=null){
content = content + line;
}
System.out.println("\n\n" + content);
br.close();