gpt4 book ai didi

java - 使用 JavaMail 从 GMail 读取完整的电子邮件

转载 作者:搜寻专家 更新时间:2023-11-01 01:14:36 25 4
gpt4 key购买 nike

我正在使用 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?

我也试过遍历消息,但这并没有让我走得太远:

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);

感谢大家的帮助。

最佳答案

问题是您获得的数据通常是 mime/multipart 流的原始数据。你需要做这样的事情:

for(Message message:messages) {
if(javax.mail.Multipart.class.isInstance(message)){
Multipart parts = (Multipart)msg.getContent(), innerPart;
int i;
for(i=0;i<parts.getCount();i++){
javax.mail.BodyPart p = parts.getBodyPart(i);
if("text/html".equals(p.getContentType())){
// now you can read out the contents from p.getContent()
// (which is typically an InputStream, but depending on your javamail
// libraries may be something else
}
}
}
}

祝你好运。

关于java - 使用 JavaMail 从 GMail 读取完整的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5928608/

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