我有一些代码来解析传入的邮件。我使用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。