邮箱采集-增加解析文件名规则

release
zhenghaiyang@ele-cloud.com 2 years ago
parent 3535652eef
commit c6a9fc0a8f
  1. 11
      dxhy-core/src/main/java/com/dxhy/core/task/SnEmailGatherTaskTest.java
  2. 11
      dxhy-core/src/main/java/com/dxhy/core/util/EmailParseUtils.java

@ -37,8 +37,8 @@ class SnEmailGatherTaskTest {
String port = "110"; String port = "110";
//邮件接收服务器地址 //邮件接收服务器地址
String mail_host = "mail.pop3.host"; String mail_host = "mail.pop3.host";
String emailName = "1149953701@qq.com"; String emailName = "745139984@qq.com";
String password = "pmdzleyabmlzgdhc"; String password = "ncmydeiilzyabfgb";
// String emailName = "15201210373@163.com"; // String emailName = "15201210373@163.com";
// String password = "JKZATQTPHDDQTQSH"; // String password = "JKZATQTPHDDQTQSH";
String mailSuffix = emailName.split("@")[1]; String mailSuffix = emailName.split("@")[1];
@ -62,7 +62,7 @@ class SnEmailGatherTaskTest {
store.connect(emailName, password); store.connect(emailName, password);
//连接邮箱服务器 //连接邮箱服务器
//获取当前时间 //获取当前时间
Date currentTime = new Date(); // Date currentTime = new Date();
// 品 ping获得收件箱 pop3协议只有一个有效的文件夹就是INBOX // 品 ping获得收件箱 pop3协议只有一个有效的文件夹就是INBOX
Folder folder = store.getFolder("INBOX"); Folder folder = store.getFolder("INBOX");
//获取邮件列表 //获取邮件列表
@ -87,13 +87,14 @@ class SnEmailGatherTaskTest {
System.out.println("------------------解析第" + msg.getMessageNumber() + "封邮件-------------------- "); System.out.println("------------------解析第" + msg.getMessageNumber() + "封邮件-------------------- ");
System.out.println("主题: " + EmailParseUtils.getSubject(msg)); System.out.println("主题: " + EmailParseUtils.getSubject(msg));
System.out.println("发件人: " + EmailParseUtils.getFrom(msg)); System.out.println("发件人: " + EmailParseUtils.getFrom(msg));
System.out.println("收件人:" + EmailParseUtils.getReceiveAddress(msg, null)); // System.out.println("收件人:" + EmailParseUtils.getReceiveAddress(msg, null));
System.out.println("发送时间:" + EmailParseUtils.getSentDate(msg, null)); System.out.println("发送时间:" + EmailParseUtils.getSentDate(msg, null));
System.out.println("是否已读:" + EmailParseUtils.isSeen(msg)); System.out.println("是否已读:" + EmailParseUtils.isSeen(msg));
System.out.println("邮件优先级:" + EmailParseUtils.getPriority(msg)); System.out.println("邮件优先级:" + EmailParseUtils.getPriority(msg));
System.out.println("是否需要回执:" + EmailParseUtils.isReplySign(msg)); System.out.println("是否需要回执:" + EmailParseUtils.isReplySign(msg));
System.out.println("邮件大小:" + msg.getSize() * 1024 + "kb"); System.out.println("邮件大小:" + msg.getSize() * 1024 + "kb");
boolean isContainerAttachment = EmailParseUtils.isContainAttachment(msg); boolean isContainerAttachment = EmailParseUtils.isContainAttachment(msg);
System.out.println("是否有附件: "+isContainerAttachment);
if(isContainerAttachment) { if(isContainerAttachment) {
List<Map<String, String>> mapList = Lists.newArrayList(); List<Map<String, String>> mapList = Lists.newArrayList();
EmailParseUtils.saveAttachment(msg, mapList); EmailParseUtils.saveAttachment(msg, mapList);
@ -141,7 +142,7 @@ class SnEmailGatherTaskTest {
System.out.println(""); System.out.println("");
} }
System.out.println(""); System.out.println("");
Date endTime = new Date(); // Date endTime = new Date();
//计算耗时时间 //计算耗时时间
// double elapsedTime = CalendarUtil.arithDateTime(endTime, currentTime); // double elapsedTime = CalendarUtil.arithDateTime(endTime, currentTime);
// 释放资源 // 释放资源

@ -267,19 +267,20 @@ public class EmailParseUtils {
//某一个邮件体也有可能是由多个邮件体组成的复杂体 //某一个邮件体也有可能是由多个邮件体组成的复杂体
String disp = bodyPart.getDisposition(); String disp = bodyPart.getDisposition();
if (disp != null && (disp.equalsIgnoreCase(Part.ATTACHMENT) || disp.equalsIgnoreCase(Part.INLINE))) { if (disp != null && (disp.equalsIgnoreCase(Part.ATTACHMENT) || disp.equalsIgnoreCase(Part.INLINE))) {
if ((StringUtils.isNotBlank(contentType)) && if ((StringUtils.isNotBlank(contentType)) && (contentType.toUpperCase().contains("PDF") || contentType.toUpperCase().contains("OFD"))){
(contentType.toUpperCase().contains("PDF") || contentType.toUpperCase().contains("OFD"))){
InputStream is = bodyPart.getInputStream(); InputStream is = bodyPart.getInputStream();
byte[] pdfStream = IOUtils.toByteArray(is); byte[] pdfStream = IOUtils.toByteArray(is);
mapLog.put("contentType", contentType.toUpperCase().contains("PDF")?"PDF":"OFD"); String pdf = contentType.toUpperCase().contains("PDF") ? "PDF" : "OFD";
mapLog.put("contentType", pdf);
if(pdfStream != null){ if(pdfStream != null){
mapLog.put("pdfStream", Base64Encoding.encodeToString(pdfStream)); mapLog.put("pdfStream", Base64Encoding.encodeToString(pdfStream));
mapList.add(mapLog); mapList.add(mapLog);
} }
}else if (StringUtils.isNotBlank(fileName) && "application/octet-stream".equals(contentType) && (fileName.endsWith("pdf") || fileName.endsWith("ofd"))){ }else if (StringUtils.isNotBlank(fileName) && (fileName.toUpperCase().contains("PDF") || fileName.toUpperCase().contains("OFD"))){
InputStream is = bodyPart.getInputStream(); InputStream is = bodyPart.getInputStream();
byte[] pdfStream = IOUtils.toByteArray(is); byte[] pdfStream = IOUtils.toByteArray(is);
mapLog.put("contentType", contentType.toUpperCase().contains("PDF")?"PDF":"OFD"); String pdf = fileName.toUpperCase().contains("PDF") ? "PDF" : "OFD";
mapLog.put("contentType", pdf);
if(pdfStream != null){ if(pdfStream != null){
mapLog.put("pdfStream", Base64Encoding.encodeToString(pdfStream)); mapLog.put("pdfStream", Base64Encoding.encodeToString(pdfStream));
mapList.add(mapLog); mapList.add(mapLog);

Loading…
Cancel
Save