如何提取Java电子邮件主体,而无需自动将每一行的每行封装为76个字符



我正在尝试使用Java邮件提取电子邮件的正文。当我尝试使用以下代码提取电子邮件的主体时,通过附加新的Line Char,该电子邮件将每一行将每行包裹为76个字符。我想要原始的电子邮件格式,而没有文本包装。这是我用来提取电子邮件的文本内容的代码。

private static String getTextFromMessage(Message message) throws MessagingException, IOException {
        String result = "";
        if (message.isMimeType("text/plain")) {
            result = message.getContent().toString();
        } else if (message.isMimeType("multipart/*")) {
            MimeMultipart mimeMultipart = (MimeMultipart) message.getContent();
            result = getTextFromMimeMultipart(mimeMultipart);
        }
        return result;
    }
    private static String getTextFromMimeMultipart(
            MimeMultipart mimeMultipart)  throws MessagingException, IOException{
        String result = "";
        int count = mimeMultipart.getCount();
        for (int i = 0; i < count; i++) {
            BodyPart bodyPart = mimeMultipart.getBodyPart(i);
            if (bodyPart.isMimeType("text/plain")) {
                result = result + bodyPart.getContent();
                break; // without break same text appears twice in my tests
            } else if (bodyPart.isMimeType("text/html")) {
                String html = (String) bodyPart.getContent();
                result = result  + org.jsoup.Jsoup.parse(html).text();
            } else if (bodyPart.getContent() instanceof MimeMultipart){
                result = result + getTextFromMimeMultipart((MimeMultipart)bodyPart.getContent());
            }
        }
        return result;
    }

有人可以提供一个解决方案,我可以在没有76个字符包装的情况下获得原始的电子邮件行长度?

而不是获取内容,您可以尝试使用javax.mail.part :: getInputStream读取内容。否则,您可以使用javax.mail.internet.mimeutility :: Frololl以删除返回的内容上的线路断裂。

javamail不会插入线路断裂。线路休息在那里在原始消息中,由发送邮件插入。发送邮件器可能插入线的原因有很多断裂,但没有看到Mime消息内容的示例您正在阅读,很难知道您正在使用哪种情况。

相关内容

  • 没有找到相关文章

最新更新