gpt4 book ai didi

java - 阅读 MIME 多部分的正文部分

转载 作者:太空狗 更新时间:2023-10-29 22:56:40 24 4
gpt4 key购买 nike

好的,所以我使用 .getcontent 并接收 javax.mail.internet.MimeMultipart@fd13b5 等

我知道我的代码中需要这样的东西,但我不知道到底需要什么。

if (p.isMimeType("text/plain")) {
pr("This is plain text");
pr("---------------------------");
if (!showStructure && !saveAttachments)
System.out.println((String)p.getContent());
} else if (p.isMimeType("multipart/*")) {
pr("This is a Multipart");
pr("---------------------------");
Multipart mp = (Multipart)p.getContent();
level++;
int count = mp.getCount();
for (int i = 0; i < count; i++)
dumpPart(mp.getBodyPart(i));
level--;
} else if (p.isMimeType("message/rfc822")) {
pr("This is a Nested Message");
pr("---------------------------");
level++;
dumpPart((Part)p.getContent());
level--;

目前我正在尝试将所有信息放入 astring 中,然后将其显示在 GUI 上,目前我一切正常,除了显示为的正文内容。javax.mail.internet.MimeMultipart@fd13b5。任何帮助将不胜感激,因为我很困。

package EmailTable;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.List;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.mail.BodyPart;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;



public class Email implements ActionListener
{

private mail mail;
private List mails;
private String password;
private String user;
private String getText;
private boolean textIsHtml = false;

public Email(List mails,String password,String user) throws MessagingException, IOException {

password = "password";
user = "user";
this.mails = mails;
String host = "10..10.10.10";
Properties properties = System.getProperties();
Session session = Session.getDefaultInstance(properties);
Store store = session.getStore("pop3");
store.connect(host, user, password);
Folder folder = store.getFolder("inbox");
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();

int length = messages.length-1;
for (int i = length; i > length-30; i--) {

mail = new mail();

mail.setEmail(messages[i].getFrom()[0]);

String to = InternetAddress.toString(
messages[i].getRecipients(Message.RecipientType.TO));
if (to != null) {
mail.setEmail2(to);
}

mail.setSubject(messages[i].getSubject());

mail.setDate(messages[i].getSentDate());

mail.setMessage(messages[i]);

mail.setContent(((MimeMessage)messages[i]).getContent());



Email.this.mails.add(mail);
}

}

public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub

}
}

最佳答案

是的,您必须遍历每个 BodyPart 才能知道它的类型,然后相应地获取内容。这是我用来获取消息内容的方法。但是我仍然无法获得某些消息的正确内容。
已编辑
实现 Bill 建议的代码后效果更好。

    Object msgContent = messages[i].getContent();

String content = "";

/* Check if content is pure text/html or in parts */
if (msgContent instanceof Multipart) {

Multipart multipart = (Multipart) msgContent;

Log.e("BodyPart", "MultiPartCount: "+multipart.getCount());

for (int j = 0; j < multipart.getCount(); j++) {

BodyPart bodyPart = multipart.getBodyPart(j);

String disposition = bodyPart.getDisposition();

if (disposition != null && (disposition.equalsIgnoreCase("ATTACHMENT"))) {
System.out.println("Mail have some attachment");

DataHandler handler = bodyPart.getDataHandler();
System.out.println("file name : " + handler.getName());
}
else {
content = getText(bodyPart); // the changed code
}
}
}
else
content= messages[i].getContent().toString();

关于java - 阅读 MIME 多部分的正文部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13474705/

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