From 46e5131ef8d1261b3495442f5db5164851e4c5e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B7=AF=E6=98=8E=E6=85=A7?= <1191093413@qq.com> Date: Thu, 14 Sep 2023 17:52:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=89=93=E5=8D=B0=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dxhy/core/task/SnEmailGatherTask.java | 221 +++++++++++------- 1 file changed, 133 insertions(+), 88 deletions(-) diff --git a/dxhy-core/src/main/java/com/dxhy/core/task/SnEmailGatherTask.java b/dxhy-core/src/main/java/com/dxhy/core/task/SnEmailGatherTask.java index 3e5f7d77..43c87c1e 100644 --- a/dxhy-core/src/main/java/com/dxhy/core/task/SnEmailGatherTask.java +++ b/dxhy-core/src/main/java/com/dxhy/core/task/SnEmailGatherTask.java @@ -102,6 +102,7 @@ public class SnEmailGatherTask { public void parseEmail(EmailMaintainVo maintainVo){ log.info("邮箱采集内部方法开始执行--"); log.info("解析用户"+maintainVo.getUsername()+"邮箱"); + log.info("邮箱:{}密码:{}",maintainVo.getEmailAddress(),maintainVo.getEmailPassword()); long startTime = System.currentTimeMillis(); String password = Base64Decoder.decodeStr(maintainVo.getEmailPassword()); String emailName = maintainVo.getEmailAddress(); @@ -369,7 +370,51 @@ public class SnEmailGatherTask { return store; } - public static void main(String[] args) { + public static void main3(String[] args){ + //判断是否为QQ还是163 + //邮件接收协议 + String emailName = "1149953701@qq.com"; + String password = "pmdzleyabmlzgdhc"; + String mail_protocol = "mail.store.protocol"; + //邮件接收协议类型 + String mail_protocol_type2 = "pop3"; + String mail_protocol_type = "pop"; + //邮件接收服务器端口 + String mail_port = "mail.pop3.port"; + //邮件接收服务器端口 + String port = "110"; + //邮件接收服务器地址 + String mail_host = "mail.pop3.host"; + String mailSuffix = emailName.split("@")[1]; + //邮箱类型 + String mailType = mailSuffix.split("\\.")[0]; + Properties props = new Properties(); + if(mailType.equalsIgnoreCase("qq")){ + //qq邮箱 + props.setProperty(mail_protocol, mail_protocol_type2); // 协议 + props.setProperty(mail_host, mail_protocol_type+"."+mailSuffix); // pop3服务器 + props.setProperty(mail_port, port); // 端口 + }else { + props.setProperty(mail_protocol, mail_protocol_type); // 协议 + props.setProperty(mail_host, mail_protocol_type+"."+mailSuffix); // pop3服务器 + props.setProperty(mail_port, port); // 端口 + } + Session session = Session.getInstance(props); + Store store = null; + try { + store = session.getStore("pop3"); + store.connect(emailName, password); + } catch (Exception e) { + try { + store.close(); + } catch (MessagingException ex) { + throw new RuntimeException(ex); + } + store = null; + } + } + + public static void main1(String[] args) { EmailMaintainVo maintainVo = new EmailMaintainVo(); maintainVo.setCompanyCode("9250"); maintainVo.setEmailAddress("1191093413@qq.com"); @@ -782,91 +827,91 @@ public class SnEmailGatherTask { } } -// public static void main(String[] args) { -// //邮件接收协议 -// String mail_protocol = "mail.store.protocol"; -// //邮件接收协议类型 -// String mail_protocol_type2 = "pop3"; -// String mail_protocol_type = "pop"; -// //邮件接收服务器端口 -// String mail_port = "mail.pop3.port"; -// //邮件接收服务器端口 -// String port = "110"; -// //邮件接收服务器地址 -// String mail_host = "mail.pop3.host"; -// String emailName = "1149953701@qq.com"; -// String password = "pmdzleyabmlzgdhc"; -// String mailSuffix = emailName.split("@")[1]; -// //邮箱类型 -// String mailType = mailSuffix.split("\\.")[0]; -// Properties props = new Properties(); -// if(mailType.equalsIgnoreCase("qq")){ -// //qq邮箱 -// props.setProperty(mail_protocol, mail_protocol_type2); // 协议 -// props.setProperty(mail_host, mail_protocol_type+"."+mailSuffix); // pop3服务器 -// props.setProperty(mail_port, port); // 端口 -// }else { -// props.setProperty(mail_protocol, mail_protocol_type2); // 协议 -// props.setProperty(mail_host, mail_protocol_type2+"."+mailSuffix); // pop3服务器 -// props.setProperty(mail_port, port); // 端口 -// } -// Session session = Session.getInstance(props); -// Store store = null; -// try { -// store = session.getStore("pop3"); -// store.connect(emailName, password); -// //连接邮箱服务器 -// //获取当前时间 -// Date currentTime = new Date(); -// // 获得收件箱 pop3协议只有一个有效的文件夹就是INBOX -// Folder folder = store.getFolder("INBOX"); -// //获取邮件列表 -// folder.open(Folder.READ_WRITE); -// // 由于POP3协议无法获知邮件的状态,所以getUnreadMessageCount得到的是收件箱的邮件总数 -// System.out.println("未读邮件数: " + folder.getUnreadMessageCount()); -// // 由于POP3协议无法获知邮件的状态,所以下面得到的结果始终都是为0 -// System.out.println("删除邮件数: " + folder.getDeletedMessageCount()); -// System.out.println("新邮件: " + folder.getNewMessageCount()); -// // 获得收件箱中的邮件总数 -// System.out.println("邮件总数: " + folder.getMessageCount()); -// Message[] messages = folder.getMessages(); -// for (int i = 0, count = messages.length; i < count; i++) { -// MimeMessage msg = (MimeMessage) messages[i]; -// System.out.println("------------------解析第" + msg.getMessageNumber() + "封邮件-------------------- "); -// System.out.println("主题: " + EmailParseUtils.getSubject(msg)); -// System.out.println("发件人: " + EmailParseUtils.getFrom(msg)); -// System.out.println("收件人:" + EmailParseUtils.getReceiveAddress(msg, null)); -// System.out.println("发送时间:" + EmailParseUtils.getSentDate(msg, null)); -// System.out.println("是否已读:" + EmailParseUtils.isSeen(msg)); -// System.out.println("邮件优先级:" + EmailParseUtils.getPriority(msg)); -// System.out.println("是否需要回执:" + EmailParseUtils.isReplySign(msg)); -// System.out.println("邮件大小:" + msg.getSize() * 1024 + "kb"); -// boolean isContainerAttachment = EmailParseUtils.isContainAttachment(msg); -// POP3Folder inbox = (POP3Folder) folder; -// String uid = inbox.getUID(msg); -// System.out.println("uid: ------------------" + uid); -// Flags flags = msg.getFlags(); -// if (!flags.contains(Flags.Flag.SEEN)) { -// //设置为已读 -// msg.setFlag(Flags.Flag.SEEN, true); -// } -// System.out.println(""); -// } -// System.out.println(""); -// Date endTime = new Date(); -// //计算耗时时间 -//// double elapsedTime = CalendarUtil.arithDateTime(endTime, currentTime); -// // 释放资源 -// folder.close(false); // false为不更新邮件,true为更新,一般在删除邮件后使用 -// store.close(); -// } catch (NoSuchProviderException e) { -// throw new RuntimeException(e); -// } catch (MessagingException e) { -// throw new RuntimeException(e); -// } catch (UnsupportedEncodingException e) { -// throw new RuntimeException(e); -// } catch (IOException e) { -// throw new RuntimeException(e); -// } -// } + public static void main(String[] args) { + //邮件接收协议 + String mail_protocol = "mail.store.protocol"; + //邮件接收协议类型 + String mail_protocol_type2 = "pop3"; + String mail_protocol_type = "pop"; + //邮件接收服务器端口 + String mail_port = "mail.pop3.port"; + //邮件接收服务器端口 + String port = "110"; + //邮件接收服务器地址 + String mail_host = "mail.pop3.host"; + String emailName = "1149953701@qq.com"; + String password = "pmdzleyabmlzgdhc"; + String mailSuffix = emailName.split("@")[1]; + //邮箱类型 + String mailType = mailSuffix.split("\\.")[0]; + Properties props = new Properties(); + if(mailType.equalsIgnoreCase("qq")){ + //qq邮箱 + props.setProperty(mail_protocol, mail_protocol_type2); // 协议 + props.setProperty(mail_host, mail_protocol_type+"."+mailSuffix); // pop3服务器 + props.setProperty(mail_port, port); // 端口 + }else { + props.setProperty(mail_protocol, mail_protocol_type2); // 协议 + props.setProperty(mail_host, mail_protocol_type2+"."+mailSuffix); // pop3服务器 + props.setProperty(mail_port, port); // 端口 + } + Session session = Session.getInstance(props); + Store store = null; + try { + store = session.getStore("pop3"); + store.connect(emailName, password); + //连接邮箱服务器 + //获取当前时间 + Date currentTime = new Date(); + // 获得收件箱 pop3协议只有一个有效的文件夹就是INBOX + Folder folder = store.getFolder("INBOX"); + //获取邮件列表 + folder.open(Folder.READ_WRITE); + // 由于POP3协议无法获知邮件的状态,所以getUnreadMessageCount得到的是收件箱的邮件总数 + System.out.println("未读邮件数: " + folder.getUnreadMessageCount()); + // 由于POP3协议无法获知邮件的状态,所以下面得到的结果始终都是为0 + System.out.println("删除邮件数: " + folder.getDeletedMessageCount()); + System.out.println("新邮件: " + folder.getNewMessageCount()); + // 获得收件箱中的邮件总数 + System.out.println("邮件总数: " + folder.getMessageCount()); + Message[] messages = folder.getMessages(); + for (int i = 0, count = messages.length; i < count; i++) { + MimeMessage msg = (MimeMessage) messages[i]; + System.out.println("------------------解析第" + msg.getMessageNumber() + "封邮件-------------------- "); + System.out.println("主题: " + EmailParseUtils.getSubject(msg)); + System.out.println("发件人: " + EmailParseUtils.getFrom(msg)); + System.out.println("收件人:" + EmailParseUtils.getReceiveAddress(msg, null)); + System.out.println("发送时间:" + EmailParseUtils.getSentDate(msg, null)); + System.out.println("是否已读:" + EmailParseUtils.isSeen(msg)); + System.out.println("邮件优先级:" + EmailParseUtils.getPriority(msg)); + System.out.println("是否需要回执:" + EmailParseUtils.isReplySign(msg)); + System.out.println("邮件大小:" + msg.getSize() * 1024 + "kb"); + boolean isContainerAttachment = EmailParseUtils.isContainAttachment(msg); + POP3Folder inbox = (POP3Folder) folder; + String uid = inbox.getUID(msg); + System.out.println("uid: ------------------" + uid); + Flags flags = msg.getFlags(); + if (!flags.contains(Flags.Flag.SEEN)) { + //设置为已读 + msg.setFlag(Flags.Flag.SEEN, true); + } + System.out.println(""); + } + System.out.println(""); + Date endTime = new Date(); + //计算耗时时间 +// double elapsedTime = CalendarUtil.arithDateTime(endTime, currentTime); + // 释放资源 + folder.close(false); // false为不更新邮件,true为更新,一般在删除邮件后使用 + store.close(); + } catch (NoSuchProviderException e) { + throw new RuntimeException(e); + } catch (MessagingException e) { + throw new RuntimeException(e); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + } }