org.apache.commons.mail.util.MimeMessageParser永远不会结束解析



我有一些代码来解析传入的邮件。我使用org.apache.commons.mail.util.MimeMessageParser。出现问题的方法如下:

private String getActionDescription(Message message) throws Exception {
    MimeMessage mimeMessage = (MimeMessage)message;
    MimeMessageParser mmp = new MimeMessageParser(mimeMessage);
    mmp.parse(); // !!! sometimes my code hangs here; inside this parse method
    String description = mmp.getHtmlContent();
    if(Utils.isNullOrEmpty(description)) {
        description = mmp.getPlainContent();
        if(description != null) {
            description = description.replace("rn", "<br>");
        }
    }
    return description;
}

大多数时候它工作得很好,但每隔几天我的代码就会卡在mmp.parse()中。我没有得到任何异常或超时。它只是停止。

有人能解释一下吗?

亲切的问候。

注:如果你需要更多的信息,尽管问,我会添加在这里。

apache jar version: commons-email-1.5.jar

jdk version: 11

我的进口:

import java.io.IOException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Part;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import org.apache.commons.mail.util.MimeMessageParser;

在获取邮件会话时添加以下属性解决了这个问题:

mail.imap.partialfetch false
mail.imap.fetchsize 1048576
带有大附件的邮件极大地减慢了解析速度。这些设置极大地改善了大附件对邮件服务器的网络IO。

最新更新