From e207b3cbdaac5047265c43caaf8b4ac072f4392e Mon Sep 17 00:00:00 2001 From: YXY <932687738@qq.com> Date: Thu, 13 Apr 2023 21:26:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=87=E6=BB=A4=E9=82=AE=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/flyingbook/domain/MailInfo.java | 5 +++++ .../com/ruoyi/flyingbook/mail/MailHelper.java | 17 ++++++++++----- .../ruoyi/flyingbook/mail/MailHttpHelper.java | 21 +++++++------------ .../flyingbook/mail/MailTencentHelper.java | 10 ++++----- .../flyingbook/mail/request/MailRequest.java | 8 ++++++- .../main/resources/mapper/MailInfoMapper.xml | 7 ++++++- 6 files changed, 41 insertions(+), 27 deletions(-) diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/domain/MailInfo.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/domain/MailInfo.java index ede2e77..42cbacd 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/domain/MailInfo.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/domain/MailInfo.java @@ -32,6 +32,11 @@ public class MailInfo extends BaseEntity { /** 收件箱地址 */ private String mailReceiveFolder; + + /** 邮件来源名称 */ + private String sourceName; + + /** * @see com.ruoyi.common.enums.FlagStatus */ diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailHelper.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailHelper.java index b2660e6..c669b6a 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailHelper.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailHelper.java @@ -6,6 +6,7 @@ import com.ruoyi.flyingbook.LarkHelper.LarkTableHelper; import com.ruoyi.flyingbook.domain.Event; import com.ruoyi.flyingbook.domain.EventLog; import com.ruoyi.flyingbook.domain.lark.LarkTableRequest; +import com.ruoyi.flyingbook.mail.request.MailRequest; import com.ruoyi.flyingbook.mapper.EventLogMapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -34,7 +35,7 @@ public class MailHelper { @Autowired private EventLogMapper eventLogMapper; - protected void parseMsg(Message[] messages,LarkTableRequest add) { + protected void parseMsg(Message[] messages, LarkTableRequest add, MailRequest req) { log.info("------------------------开始解析邮件----------------------------------"); /** @@ -47,12 +48,16 @@ public class MailHelper { log.info("----------------------------------------------------------"); String from = MimeUtility.decodeText(message.getFrom()[0].toString()); InternetAddress internetAddress = new InternetAddress(from); + String receiveAddress = this.getReceiveAddress(message, null); + if (!from.contains(req.getSourceName())){ + continue; + } msgSubject = String.format("主题:%s,发件人:%s(%s),收件人:%s", message.getSubject(), internetAddress.getPersonal(), internetAddress.getAddress(), - this.getReceiveAddress(message,null)); - String recordId = syncLarkTable(message,add); + receiveAddress); + String recordId = syncLarkTable(message,add,req.getSourceName()); this.buildLog(logs,msgSubject,recordId,null); message.setFlag(Flags.Flag.SEEN, true); } catch (Exception e) { @@ -73,8 +78,9 @@ public class MailHelper { addresss = msg.getRecipients(type); } - if (addresss == null || addresss.length < 1) + if (addresss == null || addresss.length < 1) { return null; + } for (Address address : addresss) { InternetAddress internetAddress = (InternetAddress) address; receiveAddress.append(internetAddress.toUnicodeString()).append(","); @@ -110,10 +116,11 @@ public class MailHelper { logs.add(log); } - private String syncLarkTable(Message message,LarkTableRequest add) throws MessagingException, IOException { + private String syncLarkTable(Message message,LarkTableRequest add,String sourceName) throws MessagingException, IOException { StringBuffer content = new StringBuffer(30); getMailTextContent(message,content); Map body = this.buildBody(message,content.toString()); + body.put("邮箱来源",sourceName); add.setBody(body); CreateAppTableRecordRespBody respBody = larkTableHelper.addTableRecord(add); return respBody.getRecord().getRecordId(); diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailHttpHelper.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailHttpHelper.java index 14a2feb..1a2e2cd 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailHttpHelper.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailHttpHelper.java @@ -67,7 +67,7 @@ public class MailHttpHelper extends MailHelper{ folder.getUnreadMessageCount(), folder.getNewMessageCount(), folder.getDeletedMessageCount()); - this.parseMsg(messages,add); + this.parseMsg(messages,add,req); } catch (Exception e) { log.error("邮件解析失败",e); } finally { @@ -90,7 +90,7 @@ public class MailHttpHelper extends MailHelper{ @Override protected Map buildBody(Message message,String content) { Map map = new HashMap<>(); - Integer index = 0; + Integer index = 1; StringBuilder str = new StringBuilder(); for (String s : content.split("")) { if (StringUtils.isNotBlank(str) && s.equals(" ")){ @@ -112,34 +112,27 @@ public class MailHttpHelper extends MailHelper{ map.put("信息完成度",null); map.put("数据来源",null); map.put("所属学校",null); - map.put("邮箱来源",null); -// if (index > 6){ -// map.clear(); -// } map.put("原始线索",content); return map; } private void fillMap(Map map,String msg,Integer index){ switch (index){ - case 0: - map.put("学生姓名",msg); - break; case 1: - map.put("省市",msg); + map.put("学生姓名",msg); break; case 2: - map.put("现有学历",msg); + map.put("省市",msg); break; case 3: - map.put("手机号码",msg); + map.put("现有学历",msg); break; case 4: + map.put("手机号码",msg); break; case 5: - map.put("目标国家",msg); break; case 6: - map.put("备注",msg); + map.put("目标国家",msg); break; default: break; diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailTencentHelper.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailTencentHelper.java index 80b45d3..2791e67 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailTencentHelper.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/MailTencentHelper.java @@ -26,7 +26,7 @@ public class MailTencentHelper { public static void main(String[] args) { MailTencentHelper mailHelper = new MailTencentHelper(); - MailRequest req = new MailRequest("imap.qq.com",993,"932687738","ohziejkxqvsgbbag"); + MailRequest req = new MailRequest("imap.qq.com",993,"932687738","ohziejkxqvsgbbag","新梦想"); mailHelper.receiveMail(req); } @@ -64,14 +64,12 @@ public class MailTencentHelper { //获得收件箱的邮件列表 Message[] messages = folder.search(flagTerm); // 打印不同状态的邮件数量 - log.info("收件箱中共{}封邮件!\n共{}封未读邮件!\n共{}封新邮件!\n共{}封已删除邮件!", - messages.length, - folder.getUnreadMessageCount(), - folder.getNewMessageCount(), - folder.getDeletedMessageCount()); log.info("------------------------开始解析邮件----------------------------------"); for (int i = 0; i < messages.length; i++) { Message message = messages[i]; + if (!message.getSubject().contains(req.getSourceName())){ + continue; + } parseMsg(message); //设置已读 message.setFlag(Flags.Flag.SEEN,true); diff --git a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/request/MailRequest.java b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/request/MailRequest.java index 3e0aa43..e2d1ab3 100644 --- a/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/request/MailRequest.java +++ b/ruoyi-flyingbook/src/main/java/com/ruoyi/flyingbook/mail/request/MailRequest.java @@ -41,6 +41,10 @@ public class MailRequest { * INBOX */ private String receiveFolder; + + /** 邮件来源名称 */ + private String sourceName; + /** * 是否需要反馈已读信息 */ @@ -54,11 +58,12 @@ public class MailRequest { } } - public MailRequest(String emailServer, Integer emailPort, String userName, String authorizationCode) { + public MailRequest(String emailServer, Integer emailPort, String userName, String authorizationCode,String sourceName) { this.emailServer = emailServer; this.emailPort = emailPort; this.userName = userName; this.authorizationCode = authorizationCode; + this.sourceName = sourceName; this.fillDefault(Boolean.TRUE); } @@ -70,5 +75,6 @@ public class MailRequest { this.emailProtocol = info.getMailProtocol(); this.receiveFolder = info.getMailReceiveFolder(); this.readFeedback = Boolean.TRUE.equals(readFeedback); + this.sourceName = info.getSourceName(); } } diff --git a/ruoyi-flyingbook/src/main/resources/mapper/MailInfoMapper.xml b/ruoyi-flyingbook/src/main/resources/mapper/MailInfoMapper.xml index 1fb61c2..ea82335 100644 --- a/ruoyi-flyingbook/src/main/resources/mapper/MailInfoMapper.xml +++ b/ruoyi-flyingbook/src/main/resources/mapper/MailInfoMapper.xml @@ -13,6 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -22,7 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select id,lark_table_id, mail_server, mail_port, mail_protocol, mail_user_name, mail_authorization_code, mail_receive_folder, create_by, create_time, update_by, update_time, flag, remark from mail_info + select id,lark_table_id, mail_server, mail_port, mail_protocol, mail_user_name, mail_authorization_code, mail_receive_folder,source_name, create_by, create_time, update_by, update_time, flag, remark from mail_info @@ -54,6 +56,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mail_user_name, mail_authorization_code, mail_receive_folder, + source_name, create_by, create_time, update_by, @@ -69,6 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{mailUserName}, #{mailAuthorizationCode}, #{mailReceiveFolder}, + #{sourceName}, #{createBy}, #{createTime}, #{updateBy}, @@ -88,6 +92,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" mail_user_name = #{mailUserName}, mail_authorization_code = #{mailAuthorizationCode}, mail_receive_folder = #{mailReceiveFolder}, + source_name = #{sourceName}, create_by = #{createBy}, create_time = #{createTime}, update_by = #{updateBy},