java.mail回复电子邮件并以字符串形式获取内容

java.mail回复电子邮件并以字符串形式获取内容,java,email,Java,Email,我想回复一封电子邮件,并将我的内容作为字符串显示在我的JSF页面中。。。 但我从函数(字符串getMessageContent)中仅获得以下内容: javax.mail.internet。MimeMultipart@48bb9483 以下是我的电子邮件回复代码: public EmailHelperClass answerEmail(Message message, EmailSetting emailSetting) throws MessagingException, IOException

我想回复一封电子邮件,并将我的内容作为字符串显示在我的JSF页面中。。。 但我从函数(字符串getMessageContent)中仅获得以下内容: javax.mail.internet。MimeMultipart@48bb9483

以下是我的电子邮件回复代码:

public EmailHelperClass answerEmail(Message message, EmailSetting emailSetting) throws MessagingException, IOException {
    Message newReplyMessage = message.reply(true);
    EmailHelperClass email = new EmailHelperClass();

    // FROM
    email.setFrom(emailSetting.getSendAddress());

    // TO
    Address[] froms = message.getFrom();
    String from = froms == null ? null : ((InternetAddress) froms[0]).getAddress();

    List<String> toList = new ArrayList<String>();
    toList.add(from);
    email.setToList(toList);

    email.setMimeType("text/html");
    email.setSubject("RE: " + newReplyMessage.getSubject());

    // Create your new message part
    BodyPart messageBodyPart = new MimeBodyPart();
    messageBodyPart.setText("Oiginal message:nn");

    // Create a multi-part to combine the parts
    Multipart multipart = new MimeMultipart();
    multipart.addBodyPart(messageBodyPart);

    // Create and fill part for the forwarded content
    messageBodyPart = new MimeBodyPart();
    messageBodyPart.setDataHandler(message.getDataHandler());

    // Add part to multi part
    multipart.addBodyPart(messageBodyPart);

    // Associate multi-part with message
    newReplyMessage.setContent(multipart);

    email.setText(emailReaderServiceBean.getMessageContent(newReplyMessage));

    return email;
}
public EmailHelper类answerEmail(消息消息,EmailSetting EmailSetting)抛出MessagineException,IOException{
Message newReplyMessage=Message.reply(true);
EmailHelperClass email=新的EmailHelperClass();
//从
email.setFrom(emailSetting.getSendAddress());
//到
地址[]froms=message.getFrom();
字符串from=froms==null?null:((InternetAddress)froms[0]).getAddress();
List toList=new ArrayList();
toList.add(from);
email.setToList(toList);
email.setMimeType(“text/html”);
email.setSubject(“RE:+newReplyMessage.getSubject());
//创建新的消息部分
BodyPart messageBodyPart=新的MimeBodyPart();
messageBodyPart.setText(“原始消息:nn”);
//创建多个零件以组合这些零件
Multipart Multipart=新的MimeMultipart();
multipart.addBodyPart(messageBodyPart);
//为转发的内容创建和填充部分
messageBodyPart=新的MimeBodyPart();
messageBodyPart.setDataHandler(message.getDataHandler());
//将零件添加到多零件
multipart.addBodyPart(messageBodyPart);
//将多部分与消息关联
newReplyMessage.setContent(多部分);
setText(emailReaderServiceBean.getMessageContent(newReplyMessage));
回复邮件;
}
注: EmailSetting->包括连接到服务器的信息(用户名、密码等)

EmailHelperClass包括:

private String from;
private String[] to;
private String[] cc;
private String[] bcc;
private List<String> toList;
private List<String> ccList;
private List<String> bccList;
private String subject;
private String text;
private String mimeType;
private List<EmailAttachment> attachments = new ArrayList<EmailAttachment>();
来自的私有字符串;
私有字符串[]到;
私有字符串[]cc;
私有字符串[]密件抄送;
私人名单收费表;
私人名单;
私人名单;
私有字符串主题;
私有字符串文本;
私有字符串mimeType;
私有列表附件=新的ArrayList();
以下是我返回内容的代码:

 public String getMessageContent(Message message) throws MessagingException, IOException {

    if (message == null)
        return "";

    try {
        Object content = message.getContent();
        if (content instanceof Multipart) {
            StringBuffer messageContent = new StringBuffer();
            Multipart multipart = (Multipart) content;
            for (int i = 0; i < multipart.getCount(); i++) {
                BodyPart p = multipart.getBodyPart(i);
                if (p.isMimeType("text/plain")) {
                    // messageContent.append(p.getContent().toString());
                    messageContent = new StringBuffer(p.getContent().toString());
                }
                if (p.isMimeType("text/html")) {
                    // messageContent.append(p.getContent().toString());
                    messageContent = new StringBuffer(p.getContent().toString());
                }

            }
            return messageContent.toString();
        }
        return content.toString();

    } catch (IOException e) {
    } catch (Exception e) {
    }
    return "";
公共字符串getMessageContent(消息消息)抛出MessaginException,IOException{
如果(消息==null)
返回“”;
试一试{
对象内容=message.getContent();
if(多部分的内容实例){
StringBuffer messageContent=新建StringBuffer();
多部分多部分=(多部分)内容;
对于(int i=0;i
您的
车身部件
是另一个
多部件
(零件中的零件),因此您需要执行一些递归(或者如果您确定零件中零件的深度,请再次执行相同的控制,如下所示)

Multipart Multipart=((多部分)内容);
int parts=multipart.getCount();

对于(int j=0;jmaybe)您可能正在从错误的包导入
Multipart
类…它应该是
javax.mail.Multipart
getMessageContent
中的
if(Multipart的内容实例)
否,来自javax.mail.Multipart-还有其他想法吗?我已经发布了您问题的答案。您能评估和反馈吗
  Multipart multipart = ((Multipart)content);
  int parts = multipart.getCount();
  for (int j=0; j<parts; ++j) {
    MimeBodyPart part = (MimeBodyPart)multipart.getBodyPart(j);
    if (part.getContent() instanceof Multipart) {
      // part-within-a-part, do some recursion...
        // recursion call
      // or if you are sure this part's content contains no more parts then
        Multipart multipart2 = ((Multipart)part.getContent());
        int parts2 = multipart2.getCount();
        for (int k=0; k<parts2; ++k) {

            MimeBodyPart part2 = (MimeBodyPart)multipart2.getBodyPart(k);

            String type = part2.getContentType();

            // your logic

        }

    } else {
      String type = part.getContentType();

      // your logic