gpt4 book ai didi

java.lang.ClassCastException : javax. mail.internet.MimeMultipart 无法在 NewClass.main(NewClass.java:34) 处转换​​为 java.lang.String

转载 作者:行者123 更新时间:2023-12-01 17:35:29 25 4
gpt4 key购买 nike

这是用于从 Gmail 服务器获取电子邮件的代码。除此之外,还将主题和发件人分开。我正在检查的收件箱有 5 条消息。(一些已读,一些未读)我希望 html 内容可见,所以我使用 JEditorPane

 import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import javax.swing.*;

class NewClass {
public static void main(String args[]) {
Properties props = new Properties();
props.put("mail.imap.host" , "imap.gmail.com" );
props.put("mail.imap.user" , "username");
// User SSL
props.put("mail.imap.socketFactory" , 993);
props.put("mail.imap.socketFactory.class" , "javax.net.ssl.SSLSocketFactory" );
props.put("mail.imap.port" , 993 );
Session session = Session.getDefaultInstance(props , new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username" , "password");
}
});

try {
Store store = session.getStore("imap");
store.connect("imap.gmail.com" , "username" , "password");
Folder fldr = store.getFolder("Inbox");
fldr.open(Folder.READ_WRITE);
Message msgs[] = fldr.getMessages();
for(int i = 0 ; i < msgs.length ; i++) {
// program breaks after the following statement
System.out.println(InternetAddress.toString(msgs[i].getFrom()) + "<-- FROM" + " " + msgs[i].getSubject() + "<---Subject");
JFrame fr = new JFrame();
JPanel p = new JPanel();
JEditorPane ep = new JEditorPane("text/html" , (String)msgs[i].getContent());
ep.setEditable(false);
JScrollPane sp = new JScrollPane(ep);
p.add(ep);
fr.add(p);
fr.setSize(300,300);
fr.setVisible(true);
}
} catch(Exception exc) {

}
}

}

我得到的输出是: Gmail Team <mail-noreply@google.com><-- FROM Get Gmail on your mobile phone<---Subject

在此输出之后,程序给出以下异常 java.lang.ClassCastException: javax.mail.internet.MimeMultipart cannot be cast to java.lang.String
at NewClass.main(NewClass.java:34)
。为什么框架不可见?

最佳答案

错误就在这里

JEditorPane ep = new JEditorPane("text/html" , (String)msgs[i].getContent());

您有多部分消息msgs[i].getContent() 返回javax.mail.internet.MimeMultipart。您可以对其调用 toString,但正确的方法是从中获取邮件部分。首先,您可以通过 instanceof MimeMultipart 进行检查。看JAVAMAIL API FAQ如何处理多部分消息。

关于java.lang.ClassCastException : javax. mail.internet.MimeMultipart 无法在 NewClass.main(NewClass.java:34) 处转换​​为 java.lang.String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6808547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com