diff --git a/order-management-common/pom.xml b/order-management-common/pom.xml index 5ef958fb..36af9bc2 100644 --- a/order-management-common/pom.xml +++ b/order-management-common/pom.xml @@ -95,5 +95,14 @@ - + + + nexus-myself + http://172.31.32.53:8081/repository/sndt-local + + + nexus-myself + http://172.31.32.53:8081/repository/sndt-local + + diff --git a/order-management-consumer/pom.xml b/order-management-consumer/pom.xml index 726a18a3..2d3e186a 100644 --- a/order-management-consumer/pom.xml +++ b/order-management-consumer/pom.xml @@ -504,6 +504,11 @@ compile + + org.springframework.boot + spring-boot-starter-mail + + order-api diff --git a/order-management-consumer/src/main/resources/bootstrap-dev.yaml b/order-management-consumer/src/main/resources/bootstrap-dev.yaml index 3c232c6d..2b96069f 100644 --- a/order-management-consumer/src/main/resources/bootstrap-dev.yaml +++ b/order-management-consumer/src/main/resources/bootstrap-dev.yaml @@ -4,15 +4,15 @@ spring: nacos: config: # Nacos config 地址 - server-addr: 10.1.1.72:8848 + server-addr: 172.31.36.147:33000 # Nacos config 命名空间,对应配置中的名称(sims_order_namespace) - namespace: sdenergy-order + namespace: a049b41c-b0a8-4a66-91b1-f3f3cab0e524 # Nacos config 分组 group: sims-order-config # Nacos config 登录用户名 username: nacos # Nacos config 登录密码 - password: nacos + password: Invoice.nacos.!1 # Nacos config 配置文件前缀 prefix: sims-order-api # Nacos config 配置文件后缀,拼接完URL需要对应NacosServer中的dataId对应配置,${prefix}-${spring.profiles.active}.${file-extension} diff --git a/order-management-consumer/src/main/resources/bootstrap-std.yaml b/order-management-consumer/src/main/resources/bootstrap-std.yaml index 58f980cd..08db4069 100644 --- a/order-management-consumer/src/main/resources/bootstrap-std.yaml +++ b/order-management-consumer/src/main/resources/bootstrap-std.yaml @@ -4,13 +4,14 @@ spring: nacos: config: # Nacos config 地址 - server-addr: nacos-1.itax.local:33000 +# server-addr: nacos-1.itax.local:33000 + server-addr: 172.31.36.147:33000 # Nacos config 命名空间,对应配置中的名称(sims_order_namespace) namespace: a049b41c-b0a8-4a66-91b1-f3f3cab0e524 # Nacos config 分组 group: sims-order-config # Nacos config 登录用户名 - username: admin + username: nacos # Nacos config 登录密码 password: Invoice.nacos.!1 # Nacos config 配置文件前缀 diff --git a/order-management-consumer/src/main/resources/bootstrap.yaml b/order-management-consumer/src/main/resources/bootstrap.yaml index 3ccead84..11cfa2e2 100644 --- a/order-management-consumer/src/main/resources/bootstrap.yaml +++ b/order-management-consumer/src/main/resources/bootstrap.yaml @@ -6,7 +6,9 @@ spring: name: order-api profiles: # Spring 配置文件读取 - active: @deployType@ +# active: @deployType@ +# active: dev + active: std #active: test jackson: # jackson 日期格式化 diff --git a/order-management-consumer/src/test/java/Pop3Test.java b/order-management-consumer/src/test/java/Pop3Test.java new file mode 100644 index 00000000..b3d75908 --- /dev/null +++ b/order-management-consumer/src/test/java/Pop3Test.java @@ -0,0 +1,199 @@ +import com.sun.mail.pop3.POP3Folder; +import com.sun.mail.pop3.POP3Store; +import com.sun.mail.util.MailSSLSocketFactory; +import org.junit.Test; + +import javax.mail.*; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import javax.mail.internet.MimeMultipart; +import javax.mail.internet.MimeUtility; +import javax.mail.search.FlagTerm; +import java.io.*; +import java.security.GeneralSecurityException; +import java.text.SimpleDateFormat; +import java.util.Properties; + +public class Pop3Test { + + @Test + public void main() throws Exception { + + POP3Store pop3Store = null; + try { + Session session = setCollectProperties(); + pop3Store = (POP3Store)session.getStore("pop3"); + pop3Store.connect("pop.qq.com", 995, "1021674882@qq.com", "szcrvcsoakumbcid"); + POP3Folder pop3Folder = (POP3Folder) pop3Store.getFolder("INBOX"); + pop3Folder.open(Folder.READ_WRITE); //打开收件箱 + FetchProfile fetchProfile = new FetchProfile(); + fetchProfile.add(FetchProfile.Item.ENVELOPE); + FlagTerm flagTerm = new FlagTerm(new Flags(Flags.Flag.SEEN),false); + Message[] messages = pop3Folder.search(flagTerm); + pop3Folder.fetch(messages,fetchProfile); + int length = messages.length; + System.out.println("收件箱的邮件数:" + length); + Folder folder = pop3Folder.getStore().getDefaultFolder(); + Folder[] folders = folder.list(); + + for (int i = 0; i < folders.length; i++) { + System.out.println("名称:"+folders[i].getName()); + } + + for (int i = 0; i < length; i++) { + MimeMessage msg = (MimeMessage) messages[i]; + String from = MimeUtility.decodeText(messages[i].getFrom()[0].toString()); + InternetAddress ia = new InternetAddress(from); + System.out.println("发件人:" + ia.getPersonal() + '(' + ia.getAddress() + ')'); + System.out.println("主题:" + messages[i].getSubject()); + System.out.println("邮件发送时间:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(messages[i].getSentDate())); + boolean isContainerAttachment = isContainAttachment(msg); + System.out.println("是否包含附件:" + isContainerAttachment); + if (isContainerAttachment) { + //设置需要保存的目录并保存附件 +// saveAttachment(msg, "F:\\test\\"+msg.getSubject() + "_"+i+"_"); //保存附件 + } + messages[i].setFlag(Flags.Flag.SEEN, true); + } + + } catch (Exception e) { + e.printStackTrace(); + } finally { + if(pop3Store != null){ + pop3Store.close(); + } + } + } + + /** + * 设置连接邮箱属性 + * @return + * @throws GeneralSecurityException + */ + private static Session setCollectProperties() throws GeneralSecurityException { + Properties props = new Properties(); + props.setProperty("mail.popStore.protocol", "pop3"); // 使用pop3协议 + props.setProperty("mail.pop3.port", "995"); // 端口 + + MailSSLSocketFactory sf = new MailSSLSocketFactory(); + sf.setTrustAllHosts(true); + props.put("mail.pop3.ssl.enable",true); + props.put("mail.pop3.ssl.socketFactory",sf); + props.setProperty("mail.pop3.host", "pop.qq.com"); + + + return Session.getInstance(props); + } + + /** + * 判断邮件中是否包含附件 + * @param + * @return 邮件中存在附件返回true,不存在返回false + * @throws MessagingException + * @throws Exception + */ + public static boolean isContainAttachment(Part part) throws Exception { + boolean flag = false; + if (part.isMimeType("multipart/*")) { + MimeMultipart multipart = (MimeMultipart) part.getContent(); + int partCount = multipart.getCount(); + for (int i = 0; i < partCount; i++) { + BodyPart bodyPart = multipart.getBodyPart(i); + String disp = bodyPart.getDisposition(); + if (disp != null && (disp.equalsIgnoreCase(Part.ATTACHMENT) || disp.equalsIgnoreCase(Part.INLINE))) { + flag = true; + } else if (bodyPart.isMimeType("multipart/*")) { + flag = isContainAttachment(bodyPart); + } else { + String contentType = bodyPart.getContentType(); + if (contentType.indexOf("application") != -1) { + flag = true; + } + + if (contentType.indexOf("name") != -1) { + flag = true; + } + } + + if (flag) break; + } + } else if (part.isMimeType("message/rfc822")) { + flag = isContainAttachment((Part)part.getContent()); + } + return flag; + } + + /** + * 保存附件 + * @param part 邮件中多个组合体中的其中一个组合体 + * @param destDir 附件保存目录 + * @throws UnsupportedEncodingException + * @throws MessagingException + * @throws FileNotFoundException + * @throws IOException + */ + public static void saveAttachment(Part part, String destDir) throws Exception{ + if (part.isMimeType("multipart/*")) { + Multipart multipart = (Multipart) part.getContent(); //复杂体邮件 + //复杂体邮件包含多个邮件体 + int partCount = multipart.getCount(); + for (int i = 0; i < partCount; i++) { + //获得复杂体邮件中其中一个邮件体 + BodyPart bodyPart = multipart.getBodyPart(i); + //某一个邮件体也有可能是由多个邮件体组成的复杂体 + String disp = bodyPart.getDisposition(); + if (disp != null && (disp.equalsIgnoreCase(Part.ATTACHMENT) || disp.equalsIgnoreCase(Part.INLINE))) { + InputStream is = bodyPart.getInputStream(); + saveFile(is, destDir, decodeText(bodyPart.getFileName())); + } else if (bodyPart.isMimeType("multipart/*")) { + saveAttachment(bodyPart,destDir); + } else { + String contentType = bodyPart.getContentType(); + if (contentType.indexOf("name") != -1 || contentType.indexOf("application") != -1) { + saveFile(bodyPart.getInputStream(), destDir, decodeText(bodyPart.getFileName())); + } + } + } + } else if (part.isMimeType("message/rfc822")) { + saveAttachment((Part) part.getContent(),destDir); + } + } + + /** + * 读取输入流中的数据保存至指定目录 + * @param is 输入流 + * @param fileName 文件名 + * @param destDir 文件存储目录 + * @throws Exception + */ + private static void saveFile(InputStream is, String destDir, String fileName) + throws Exception { + //如果文件名称包含关键字则进行保存 + BufferedInputStream bis = new BufferedInputStream(is); + BufferedOutputStream bos = new BufferedOutputStream( + new FileOutputStream(new File(destDir + fileName))); + int len = -1; + while ((len = bis.read()) != -1) { + bos.write(len); + bos.flush(); + } + bos.close(); + bis.close(); + } + + /** + * 文本解码 + * @param encodeText 解码MimeUtility.encodeText(String text)方法编码后的文本 + * @return 解码后的文本 + * @throws UnsupportedEncodingException + */ + public static String decodeText(String encodeText) throws UnsupportedEncodingException { + if (encodeText == null || "".equals(encodeText)) { + return ""; + } else { + return MimeUtility.decodeText(encodeText); + } + } +} + + diff --git a/pom.xml b/pom.xml index 3bb201c1..61a61c1c 100644 --- a/pom.xml +++ b/pom.xml @@ -148,15 +148,22 @@ 6.1.6.Final - http://10.1.20.6:8081/nexus/content/groups/public - http://10.1.20.6:8081/nexus/content/groups/public + + - http://10.1.20.6:8081/nexus/content/repositories/releases + + + + + + http://172.31.32.53:8081/repository/maven-public + http://172.31.32.53:8081/repository/maven-public + + http://172.31.32.53:8081/repository/maven-public - http://10.1.20.6:8081/nexus/content/repositories/snapshots + http://172.31.32.53:8081/repository/maven-public - @@ -568,9 +575,9 @@ - - true - + + + @@ -663,14 +670,17 @@ dxhy Dxhy@123 - http://10.1.20.6:8081/nexus/content/groups/public - http://10.1.20.6:8081/nexus/content/groups/public + + - http://10.1.20.6:8081/nexus/content/repositories/releases - - http://10.1.20.6:8081/nexus/content/repositories/snapshots - + + + + + + true +