From a30b5b0d7531d7a2058d4f76727ca182f1235ade Mon Sep 17 00:00:00 2001 From: lijiarao Date: Mon, 27 Sep 2021 15:48:38 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E7=94=A8=E6=88=B7=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E9=82=AE=E7=AE=B1=E5=AF=86=E7=A0=81=E5=AD=97=E6=AE=B5=EF=BC=8C?= =?UTF-8?q?=E5=8F=91=E9=80=81=E9=82=AE=E7=AE=B1=E6=94=B9=E4=B8=BA=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8F=91=E4=BB=B6=E4=BA=BA=E7=9A=84=E9=82=AE=E7=AE=B1?= =?UTF-8?q?=EF=BC=8C=E6=B2=A1=E6=9C=89=E9=82=AE=E7=AE=B1=E6=88=96=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E5=AF=86=E7=A0=81=E6=97=B6=EF=BC=8C=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E4=BD=BF=E7=94=A8admin=E7=9A=84=E9=82=AE=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/jero/common/system/vo/LoginUser.java | 5 ++ .../java/com/jero/config/StaticConfig.java | 3 + .../service/impl/SendMessageServiceImpl.java | 19 ++++- .../impl/PayMeetingSituationServiceImpl.java | 7 ++ .../handle/impl/EmailSendMsgHandle.java | 71 +++++++++++++------ .../system/controller/SysUserController.java | 4 +- .../jero/modules/system/entity/SysUser.java | 6 ++ .../jero/modules/system/util/UserUtil.java | 8 +++ 8 files changed, 98 insertions(+), 25 deletions(-) diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/LoginUser.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/LoginUser.java index e1aa2683..ff28a23b 100644 --- a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/LoginUser.java +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/system/vo/LoginUser.java @@ -121,4 +121,9 @@ public class LoginUser { */ private String roleCode; + /** + * 邮箱授权码 + */ + private String emailPassword; + } diff --git a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/StaticConfig.java b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/StaticConfig.java index d7eb5054..cc875930 100644 --- a/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/StaticConfig.java +++ b/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/config/StaticConfig.java @@ -20,6 +20,9 @@ public class StaticConfig { @Value(value = "${spring.mail.username}") private String emailFrom; + @Value(value = "${spring.mail.host}") + private String host; + /*@Bean public void initStatic() { diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java index 6f06f9ca..405104a9 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/common/service/impl/SendMessageServiceImpl.java @@ -9,6 +9,8 @@ import com.jero.common.enums.MessageUrlEnums; import com.jero.common.exception.JeroBootException; import com.jero.common.service.SendMessageService; import com.jero.common.system.api.ISysBaseAPI; +import com.jero.common.system.vo.LoginUser; +import com.jero.common.util.PasswordUtil; import com.jero.common.util.oConvertUtils; import com.jero.modules.message.entity.SysMessageTemplate; import com.jero.modules.message.handle.impl.EmailSendMsgHandle; @@ -83,9 +85,21 @@ public class SendMessageServiceImpl implements SendMessageService { // 1短信 2邮件 3系统 // 发送邮件 true - if(templateType.contains(ProjectCommon.MESSAGE_TYPE2) && !StringUtils.isEmpty(sendMessageDTO.getEmail())){ + String fromUser = sendMessageDTO.getFromUser(); + LoginUser loginUser = sysBaseAPI.getUserByName(fromUser); + if(templateType.contains(ProjectCommon.MESSAGE_TYPE2) && Objects.nonNull(loginUser)){ try { - EmailSendMsgHandle emailHandle = new EmailSendMsgHandle(); + String email = loginUser.getEmail(); + String emailPassword = loginUser.getEmailPassword(); + //如果发件人没有邮箱或邮箱密码则使用admin账户的邮箱密码 + if (StringUtils.isBlank(email) || StringUtils.isBlank(emailPassword)) { + loginUser = sysBaseAPI.getUserByName("admin"); + email = loginUser.getEmail(); + emailPassword = loginUser.getEmailPassword(); + } + email = PasswordUtil.decrypt(email); + emailPassword = PasswordUtil.decrypt(emailPassword); + EmailSendMsgHandle emailHandle = new EmailSendMsgHandle(email,emailPassword); // 发送带附件邮箱 if(!CollectionUtils.isEmpty(sendMessageDTO.getListFile())){ emailHandle.SendMsgAndFile(sendMessageDTO.getEmail(), title, content,sendMessageDTO.getListFile()); @@ -99,7 +113,6 @@ public class SendMessageServiceImpl implements SendMessageService { // 发送消息 if(templateType.contains(ProjectCommon.MESSAGE_TYPE3) && !StringUtils.isEmpty(sendMessageDTO.getToUser())){ try { - String fromUser = sendMessageDTO.getFromUser(); String toUser = sendMessageDTO.getToUser(); String busId = sendMessageDTO.getBusId(); String busType = sendMessageDTO.getBusType(); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java index 2c6a811c..d2439fd0 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java @@ -590,6 +590,13 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl fileList) { - JavaMailSender mailSender = (JavaMailSender) SpringContextUtils.getBean("mailSender"); + //创建实例 + JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); + //设置发送的服务器(这里的属性 qq和网易的不一样)qq:smtp.qq.com 网易:smtp.126.com + StaticConfig staticConfig = SpringContextUtils.getBean(StaticConfig.class); + mailSender.setHost(staticConfig.getHost()); + //当前发送人邮箱(也就是自己) + mailSender.setUsername(email); + //授权码 (不是邮箱密码 是上面咱们的准备工作获取的那个码) + mailSender.setPassword(emailPassword); + //设置端口(这里用465、默认的25 在阿里云服务器上未开放,推荐我们设置465) + mailSender.setPort(25); MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = null; - //update-begin-author:taoyan date:20200811 for:配置类数据获取 - if(oConvertUtils.isEmpty(emailFrom)){ - StaticConfig staticConfig = SpringContextUtils.getBean(StaticConfig.class); - setEmailFrom(staticConfig.getEmailFrom()); - } if(CollectionUtils.isEmpty(fileList)){ throw new JeroBootException("附件不能为空!"); } @@ -93,10 +122,10 @@ public class EmailSendMsgHandle implements ISendMsgHandle { ArrayList mailList = new ArrayList<>(Arrays.asList(es_receiver.split(","))); for (String mail:mailList){ if(!StringUtils.isBlank(mail)) { - helper = new MimeMessageHelper(message, true); + helper = new MimeMessageHelper(message, true,"utf-8"); // 设置发送方邮箱地址 helper.setTo(es_receiver); - helper.setFrom(emailFrom); + helper.setFrom(email); helper.setSubject(es_title); helper.setText(es_content, true); for(String file :fileList) { diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java index be8fc947..ef69e10d 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysUserController.java @@ -346,10 +346,12 @@ public class SysUserController { } else { SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class); String email; + String emailPassword; String phone; try { //1:先用私钥解密数据 email = CommonUtils.decryptBtRsaPriKey(user.getEmail(), rsaPrivateKey); + emailPassword = CommonUtils.decryptBtRsaPriKey(user.getEmailPassword(), rsaPrivateKey); phone = CommonUtils.decryptBtRsaPriKey(user.getPhone(), rsaPrivateKey); } catch (Exception e) { throw new JeroBootException("解密失败!",e); @@ -361,7 +363,7 @@ public class SysUserController { //3:把数据加密在放回来 user.setEmail(PasswordUtil.encrypt(email)); user.setPhone(PasswordUtil.encrypt(phone)); - + user.setEmailPassword(PasswordUtil.encrypt(emailPassword)); user.setUpdateTime(new Date()); //String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), sysUser.getSalt()); user.setPassword(sysUser.getPassword()); diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java index 44afdc5d..d91ab01e 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/entity/SysUser.java @@ -208,4 +208,10 @@ public class SysUser implements Serializable { @ApiModelProperty(value = "确认密码") @TableField(exist = false) private String verifyPassword; + + /** + * 邮箱授权码 + */ + @ApiModelProperty(value = "邮箱授权码") + private String emailPassword; } diff --git a/jero-boot-module-system/src/main/java/com/jero/modules/system/util/UserUtil.java b/jero-boot-module-system/src/main/java/com/jero/modules/system/util/UserUtil.java index c5e9c3f5..a2c635f2 100644 --- a/jero-boot-module-system/src/main/java/com/jero/modules/system/util/UserUtil.java +++ b/jero-boot-module-system/src/main/java/com/jero/modules/system/util/UserUtil.java @@ -25,6 +25,10 @@ public class UserUtil { if (StringUtils.isNotBlank(phone)){ record.setPhone(PasswordUtil.decrypt(phone)); } + String emailPassword = record.getEmailPassword(); + if (StringUtils.isNotBlank(emailPassword)) { + record.setEmailPassword(PasswordUtil.decrypt(emailPassword)); + } //接口调用查询返回结果不能返回密码相关信息 record.setSalt(""); record.setPassword(""); @@ -46,5 +50,9 @@ public class UserUtil { if (StringUtils.isNotBlank(phone)){ record.setPhone(PasswordUtil.encrypt(phone)); } + String emailPassword = record.getEmailPassword(); + if (StringUtils.isNotBlank(emailPassword)) { + record.setEmailPassword(PasswordUtil.decrypt(emailPassword)); + } } }