当我使用javamail将回复邮件发送到outlook帐户时,为什么将其作为附件发送?

当我使用javamail将回复邮件发送到outlook帐户时,为什么将其作为附件发送?,java,jakarta-mail,Java,Jakarta Mail,我尝试了很多方法使用outlook帐户和javamail api在同一线程中获得回复,但我无法在同一线程中获得回复,而只能作为附件获得回复。 我试图复制整个内容并保存在当前邮件中,即使我将其作为附件,也试图将内容配置更改为内联,但仍然不起作用 你可以在下面找到我尝试过的代码 Properties properties = new Properties(); Session emailSession = Session.getDefaultInstance(properties,n

我尝试了很多方法使用outlook帐户和javamail api在同一线程中获得回复,但我无法在同一线程中获得回复,而只能作为附件获得回复。 我试图复制整个内容并保存在当前邮件中,即使我将其作为附件,也试图将内容配置更改为内联,但仍然不起作用 你可以在下面找到我尝试过的代码

    Properties properties = new Properties();
    Session emailSession = Session.getDefaultInstance(properties,null); 
    store = emailSession.getStore("imaps");     
    store.connect(host,mailbox_username, mailbox_password); 
    folder = store.getFolder("Inbox");
    folder.open(Folder.READ_WRITE);
    Message[] unreadMessages = folder.search(new FlagTerm(new Flags(Flags.Flag.SEEN),false));
    if(unreadMessages.size()>0)
    {

        for (int i = 0; i < unreadMessages.length; i++) 
        {
            log.info("retriving message "+(i+1))
            Message message = unreadMessages[i]

            Address[] froms = message.getFrom();
            String senderEmailAddress =(froms[0]).getAddress();

            if(senderEmailAddress.endsWith("@gmail.com"))
            {
                subject = message.getSubject()
                log.info(message.getSubject())

            }
            else
            {   //reply to same mail here we need to reply to the message
                Message message2 = new MimeMessage(emailSession);  
                message2= (MimeMessage) message.reply(false);
                message2.setSubject("RE: " + message.getSubject());  
                //message2.setFrom(new InternetAddress(from));  
                message2.setReplyTo(message.getReplyTo());
                message2.addRecipient(Message.RecipientType.TO, new InternetAddress(senderEmailAddress));                        
                BodyPart messageBodyPart = new MimeBodyPart();  
                content = "some reply message"
                //multipart.addBodyPart(content);
                messageBodyPart.setText(content);                        
                Multipart multipart = new MimeMultipart("related");  
                multipart.addBodyPart(messageBodyPart);  
                messageBodyPart = new MimeBodyPart();                   
                //messageBodyPart.setDataHandler(message.getDataHandler());  
                //bodyPart.setDataHandler(new DataHandler(ds));
                //messageBodyPart.setHeader("Content-Type", "image/jpeg; name=image.jpg");
                //messageBodyPart.setHeader("Content-ID", "<image>");
                //messageBodyPart.setHeader("Content-Disposition", "inline");
                //messageBodyPart.addBodyPart(bodyPart);
                //msg.setContent(content);
                messageBodyPart.setDisposition(MimeBodyPart.INLINE);
                messageBodyPart.setContent(message, "message/rfc822");
                messageBodyPart.setDataHandler(message.getDataHandler());  
                // Add part to multi part  
                multipart.addBodyPart(messageBodyPart);  
                // Associate multi-part with message  
                message2.setContent(multipart);  
                Transport t = emailSession.getTransport("smtp");
                try {
                 t.connect(mailbox_username, mailbox_password);
                    t.sendMessage(message2, message2.getAllRecipients());
                } finally {
                   t.close();
                }
            }
        }
    }

内联与附件只是给邮件读者的建议。许多人忽略了设备,或者无法在线显示所有内容类型


如果您希望原始邮件的文本显示在回复邮件的正文中,例如,缩进>,则需要提取原始文本并适当重新格式化,将其添加到回复邮件的文本中,然后将该新字符串设置为回复邮件的内容。

请将您的问题集中在一个主题上。请参阅将问题更改为特定主题请帮助进行解释。我的问题是,我的邮件内容是html表格。执行此操作时,text\u data=Stringmessage.getContent println Jsoup.parsetext\u data.text;我只收到一封短信。但是我需要相同格式的邮件的全部内容。如果您想要原始html内容,不要使用Jsoup,只需使用文本数据即可。如果这不是你想要的,你需要更清楚地解释你想要什么,也许可以举个例子。