|
@@ -844,7 +844,7 @@ public class EmailParseService {
|
|
|
if (isNotParseConditionSatisfied) {
|
|
|
continue;
|
|
|
}
|
|
|
- senderEmail = getSenderEmail(message.getFrom());
|
|
|
+ senderEmail = getSenderEmail(message);
|
|
|
emailType = EmailUtil.getEmailTypeBySubject(message.getSubject(), emailTypeMap);
|
|
|
String emailDateStr = DateUtil.format(emailDate, DateConst.YYYY_MM_DD_HH_MM_SS);
|
|
|
if (emailType == null) {
|
|
@@ -898,27 +898,41 @@ public class EmailParseService {
|
|
|
return emailMessageMap;
|
|
|
}
|
|
|
|
|
|
- private String getSenderEmail(Address[] senderAddress) {
|
|
|
- if (senderAddress == null || senderAddress.length == 0) {
|
|
|
- log.info("发件人获取失败=============================");
|
|
|
- return null;
|
|
|
- }
|
|
|
- // 此时的address是含有编码(MIME编码方式)后的文本和实际的邮件地址
|
|
|
- String address = "";
|
|
|
- for(Address from : senderAddress){
|
|
|
- if(StringUtil.isNotEmpty(from.toString())){
|
|
|
- address = from.toString();
|
|
|
- break;
|
|
|
+ private String getSenderEmail(MimeMessage message) {
|
|
|
+ Address[] senderAddress = null;
|
|
|
+ try {
|
|
|
+ senderAddress = message.getFrom();
|
|
|
+ if (senderAddress == null || senderAddress.length == 0) {
|
|
|
+ log.info("发件人获取失败=============================");
|
|
|
+ return null;
|
|
|
}
|
|
|
+ // 此时的address是含有编码(MIME编码方式)后的文本和实际的邮件地址
|
|
|
+ String address = "";
|
|
|
+ for(Address from : senderAddress){
|
|
|
+ if(StringUtil.isNotEmpty(from.toString())){
|
|
|
+ address = from.toString();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.info("发件人地址:"+address+"========================senderAddress size:"+senderAddress.length);
|
|
|
+ // 正则表达式匹配邮件地址
|
|
|
+ Pattern pattern = Pattern.compile("<(\\S+)>");
|
|
|
+ Matcher matcher = pattern.matcher(address);
|
|
|
+ if (matcher.find()) {
|
|
|
+ return matcher.group(1);
|
|
|
+ }
|
|
|
+ //说明匹配不到,直接获取sender
|
|
|
+ Address sender = message.getSender();
|
|
|
+ String senderEmail = sender.toString();
|
|
|
+ log.info("senderEmail:"+senderEmail+"====================");
|
|
|
+ if(senderEmail.contains("<") && senderEmail.contains(">") && senderEmail.indexOf("<") < senderEmail.indexOf(">")){
|
|
|
+ senderEmail = senderEmail.substring(senderEmail.indexOf("<")+1,senderEmail.length()-1);
|
|
|
+ }
|
|
|
+ return senderEmail;
|
|
|
+ } catch (MessagingException e) {
|
|
|
+ log.error(e.getMessage(),e);
|
|
|
}
|
|
|
- log.info("发件人地址:"+address+"========================senderAddress size:"+senderAddress.length);
|
|
|
- // 正则表达式匹配邮件地址
|
|
|
- Pattern pattern = Pattern.compile("<(\\S+)>");
|
|
|
- Matcher matcher = pattern.matcher(address);
|
|
|
- if (matcher.find()) {
|
|
|
- return matcher.group(1);
|
|
|
- }
|
|
|
- return address;
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
public List<NameValueVO> searchEmailCount(DataboardQuery databoardQuery) {
|