add 用户增加邮箱密码字段,发送邮箱改为查询发件人的邮箱,没有邮箱或邮箱密码时,默认使用admin的邮箱

This commit is contained in:
lijiarao
2021-09-27 15:48:46 +08:00
parent 90aa46c375
commit a30b5b0d75
8 changed files with 98 additions and 25 deletions
@@ -11,18 +11,20 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class EmailSendMsgHandle implements ISendMsgHandle {
static String emailFrom;
private String email;
private String emailPassword;
private String host;
@Autowired
private Environment env;
@@ -31,24 +33,46 @@ public class EmailSendMsgHandle implements ISendMsgHandle {
EmailSendMsgHandle.emailFrom = emailFrom;
}
public EmailSendMsgHandle() {
}
public EmailSendMsgHandle(String email, String emailPassword) {
this.email = email;
this.emailPassword = emailPassword;
}
@Override
public void SendMsg(String es_receiver, String es_title, String es_content) {
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-authortaoyan date:20200811 for:配置类数据获取
if(oConvertUtils.isEmpty(emailFrom)){
StaticConfig staticConfig = SpringContextUtils.getBean(StaticConfig.class);
setEmailFrom(staticConfig.getEmailFrom());
}
//update-end-authortaoyan date:20200811 for:配置类数据获取
try {
helper = new MimeMessageHelper(message, true);
// 设置发送方邮箱地址
helper.setFrom(emailFrom);
//这里的utf-8解决 邮件 内容乱码
MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
//当前发送人邮箱(也就是自己)
helper.setFrom(email);
//发送到的邮箱地址
helper.setTo(es_receiver);
//邮件主题、标题
helper.setSubject(es_title);
//类容
helper.setText(es_content, true);
//这里赋值的是附件及名称 attachmentsMailNameDispose
//helper.addAttachment(attachmentsMailNameDispose(uploadPDF), file);
//多个这样创建
// helper.addAttachment(attachmentsMailNameDispose(uploadEXECL), file);
// helper.addAttachment(attachmentsMailNameDispose(uploadCAD), file);
mailSender.send(message);
} catch (MessagingException e) {
e.printStackTrace();
@@ -67,14 +91,19 @@ public class EmailSendMsgHandle implements ISendMsgHandle {
* @Exception
*/
public void SendMsgAndFile(String es_receiver, String es_title, String es_content, List<String> 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-authortaoyan 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<String> 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) {
@@ -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());
@@ -208,4 +208,10 @@ public class SysUser implements Serializable {
@ApiModelProperty(value = "确认密码")
@TableField(exist = false)
private String verifyPassword;
/**
* 邮箱授权码
*/
@ApiModelProperty(value = "邮箱授权码")
private String emailPassword;
}
@@ -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));
}
}
}