From cfe535e2a865d10322dfabf82a3943afd6fbab04 Mon Sep 17 00:00:00 2001 From: fanxb Date: Fri, 20 Sep 2019 17:08:40 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Feat:=20=E4=B8=B4=E6=97=B6=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bookMarkService/.gitignore | 1 + .../business/user/constant/RedisConstant.java | 24 +++ .../user/constant/ValidatedConstant.java | 29 +++ .../user/controller/BaseInfoController.java | 75 +++++++ .../bookmark/business/user/dao/UserDao.java | 22 ++ .../business/user/entity/EmailUpdateBody.java | 24 +++ .../user/entity/EmailUpdateRedis.java | 16 ++ .../user/entity/UpdatePasswordBody.java | 22 ++ .../business/user/entity/UsernameBody.java | 20 ++ .../user/service/BaseInfoService.java | 60 ++++++ .../business/user/service/UserService.java | 2 +- .../main/resources/mapper/user-userMapper.xml | 6 +- .../bookmark/common/constant/Constant.java | 4 - .../fanxb/bookmark/common/entity/User.java | 2 + .../common/exception/ExceptionHandle.java | 5 +- .../fanxb/bookmark/common/util/HashUtil.java | 191 ++++++++++-------- .../fanxb/bookmark/common/util/MailUtil.java | 33 ++- 17 files changed, 428 insertions(+), 108 deletions(-) create mode 100644 bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/RedisConstant.java create mode 100644 bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/ValidatedConstant.java create mode 100644 bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/BaseInfoController.java create mode 100644 bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateBody.java create mode 100644 bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateRedis.java create mode 100644 bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/UpdatePasswordBody.java create mode 100644 bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/UsernameBody.java create mode 100644 bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java diff --git a/bookMarkService/.gitignore b/bookMarkService/.gitignore index e784e37..f5a191e 100644 --- a/bookMarkService/.gitignore +++ b/bookMarkService/.gitignore @@ -1,5 +1,6 @@ HELP.md target +static !.mvn/wrapper/maven-wrapper.jar ### STS ### diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/RedisConstant.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/RedisConstant.java new file mode 100644 index 0000000..ba07c48 --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/RedisConstant.java @@ -0,0 +1,24 @@ +package com.fanxb.bookmark.business.user.constant; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/9/20 16:44 + */ +public class RedisConstant { + + /** + * 修改邮箱验证有效期 + */ + public static final int UPDATE_EMAIL_EXPIRE = 120; + + /** + * 获取redis key + * @param code code + */ + public static String getUpdateEmailKey(String code) { + return "update_email_" + code; + } +} diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/ValidatedConstant.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/ValidatedConstant.java new file mode 100644 index 0000000..df1ad2c --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/constant/ValidatedConstant.java @@ -0,0 +1,29 @@ +package com.fanxb.bookmark.business.user.constant; + +/** + * 类功能简述:校验相关常量 + * 类功能详述: + * + * @author fanxb + * @date 2019/9/20 14:49 + */ +public interface ValidatedConstant { + + /** + * 密码正则 + */ + String PASSWORD_REG = "^(?=.*?\\d+.*?)(?=.*?[a-zA-Z]+.*?)[\\da-zA-Z]{6,20}$"; + /** + * 密码校验错误提示语 + */ + String PASSWORD_MESSAGE = "密码为6-20位数字和字母组合"; + + /** + * 用户名正则 + */ + String USERNAME_REG = "[\\da-zA-Z]{1,10}"; + /** + * 用户名错误提示语 + */ + String USERNAME_MESSAGE = "用户名为1-10位的数字或字母组合"; +} diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/BaseInfoController.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/BaseInfoController.java new file mode 100644 index 0000000..997e17f --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/controller/BaseInfoController.java @@ -0,0 +1,75 @@ +package com.fanxb.bookmark.business.user.controller; + +import com.fanxb.bookmark.business.user.entity.EmailUpdateBody; +import com.fanxb.bookmark.business.user.entity.UpdatePasswordBody; +import com.fanxb.bookmark.business.user.entity.UsernameBody; +import com.fanxb.bookmark.business.user.service.BaseInfoService; +import com.fanxb.bookmark.common.entity.Result; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + + +/** + * 类功能简述:用户基本信息相关功能 + * + * @author fanxb + * @date 2019/9/18 15:53 + */ +@RestController +@RequestMapping("/baseInfo") +@Validated +public class BaseInfoController { + + @Autowired + private BaseInfoService baseInfoService; + + /** + * Description: 修改密码 + * + * @param oldPass 旧密码 + * @param newPass 新密码 + * @return com.fanxb.bookmark.common.entity.Result + * @author fanxb + * @date 2019/9/18 15:49 + */ + @PostMapping("/password") + public Result changePassword(@Valid @RequestBody UpdatePasswordBody body) { + this.baseInfoService.changePassword(body); + return Result.success(null); + } + + + /** + * Description: 修改用户名 + * + * @param body body + * @return com.fanxb.bookmark.common.entity.Result + * @author fanxb + * @date 2019/9/18 15:42 + */ + @PostMapping("/username") + public Result updateUsername(@Validated @RequestBody UsernameBody body) { + this.baseInfoService.updateUsername(body.getUsername()); + return null; + } + + /** + * Description: 修改邮箱,需要先确认密码,获取checkId,然后还需确认新邮箱 + * + * @param email 新的邮箱地址 + * @param checkId 确认id + * @return com.fanxb.bookmark.common.entity.Result + * @author fanxb + * @date 2019/9/18 15:41 + */ + @PostMapping("/email") + public Result updateEmail(@Validated @RequestBody EmailUpdateBody body) { + return null; + } +} diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java index bf0eba1..b009c52 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/dao/UserDao.java @@ -75,4 +75,26 @@ public interface UserDao { */ @Update("update user set icon=#{icon} where userId=#{userId}") void updateUserIcon(@Param("userId") int userId, @Param("icon") String icon); + + /** + * Description: 根据用户id修改密码 + * + * @param userId userId + * @param newPass newPass + * @author fanxb + * @date 2019/9/20 14:39 + */ + @Update("update user set password=#{password} where userId=#{userId}") + void updatePasswordByUserId(@Param("userId") int userId, @Param("password") String newPass); + + /** + * Description: 根据用户id修改用户名 + * + * @author fanxb + * @date 2019/9/20 16:22 + * @param userId userId + * @param username username + */ + @Update("update user set username=#{username} where userId=#{userId}") + void updateUsernameByUserId(@Param("userId") int userId, @Param("username") String username); } diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateBody.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateBody.java new file mode 100644 index 0000000..8657f23 --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateBody.java @@ -0,0 +1,24 @@ +package com.fanxb.bookmark.business.user.entity; + +import com.fanxb.bookmark.business.user.constant.ValidatedConstant; +import lombok.Data; + +import javax.validation.constraints.Email; +import javax.validation.constraints.Pattern; + +/** + * 类功能简述:修改邮箱表单 + * 类功能详述: + * + * @author fanxb + * @date 2019/9/20 16:35 + */ +@Data +public class EmailUpdateBody { + @Pattern(regexp = ValidatedConstant.PASSWORD_REG, message = ValidatedConstant.PASSWORD_MESSAGE) + private String oldPass; + @Email + private String newEmail; + + private String code; +} diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateRedis.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateRedis.java new file mode 100644 index 0000000..d686c0f --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/EmailUpdateRedis.java @@ -0,0 +1,16 @@ +package com.fanxb.bookmark.business.user.entity; + +import lombok.Data; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/9/20 16:47 + */ +@Data +public class EmailUpdateRedis { + private int userId; + private String email; +} diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/UpdatePasswordBody.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/UpdatePasswordBody.java new file mode 100644 index 0000000..c40ef40 --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/UpdatePasswordBody.java @@ -0,0 +1,22 @@ +package com.fanxb.bookmark.business.user.entity; + +import com.fanxb.bookmark.business.user.constant.ValidatedConstant; +import lombok.Data; + +import javax.validation.constraints.Pattern; + +/** + * 类功能简述:修改密码表单 + * 类功能详述: + * + * @author fanxb + * @date 2019/9/20 16:13 + */ +@Data +public class UpdatePasswordBody { + + @Pattern(regexp = ValidatedConstant.PASSWORD_MESSAGE, message = ValidatedConstant.PASSWORD_MESSAGE) + private String oldPass; + @Pattern(regexp = ValidatedConstant.PASSWORD_MESSAGE, message = ValidatedConstant.PASSWORD_MESSAGE) + private String newPass; +} diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/UsernameBody.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/UsernameBody.java new file mode 100644 index 0000000..8642c1f --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/entity/UsernameBody.java @@ -0,0 +1,20 @@ +package com.fanxb.bookmark.business.user.entity; + +import com.fanxb.bookmark.business.user.constant.ValidatedConstant; +import lombok.Data; + +import javax.validation.constraints.Pattern; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/9/20 15:46 + */ +@Data +public class UsernameBody { + + @Pattern(regexp = ValidatedConstant.USERNAME_REG, message = ValidatedConstant.USERNAME_MESSAGE) + private String username; +} diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java new file mode 100644 index 0000000..a75350c --- /dev/null +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/BaseInfoService.java @@ -0,0 +1,60 @@ +package com.fanxb.bookmark.business.user.service; + +import com.fanxb.bookmark.business.user.dao.UserDao; +import com.fanxb.bookmark.business.user.entity.EmailUpdateBody; +import com.fanxb.bookmark.business.user.entity.UpdatePasswordBody; +import com.fanxb.bookmark.common.constant.Constant; +import com.fanxb.bookmark.common.entity.MailInfo; +import com.fanxb.bookmark.common.exception.FormDataException; +import com.fanxb.bookmark.common.util.HashUtil; +import com.fanxb.bookmark.common.util.MailUtil; +import com.fanxb.bookmark.common.util.UserContextHolder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * 类功能简述: + * 类功能详述: + * + * @author fanxb + * @date 2019/9/18 15:54 + */ +@Service +public class BaseInfoService { + + @Autowired + private UserDao userDao; + + public void changePassword(UpdatePasswordBody body) { + int userId = UserContextHolder.get().getUserId(); + String realOldPass = userDao.selectByUserId(userId).getPassword(); + if (!realOldPass.equals(HashUtil.getPassword(body.getOldPass()))) { + throw new FormDataException("旧密码错误"); + } + userDao.updatePasswordByUserId(userId, HashUtil.getPassword(body.getNewPass())); + } + + + /** + * Description: 修改用户名 + * + * @param username 用户名 + * @author fanxb + * @date 2019/9/20 16:18 + */ + public void updateUsername(String username) { + userDao.updateUsernameByUserId(UserContextHolder.get().getUserId(), username); + } + + public void updateEmail(EmailUpdateBody body){ + int userId = UserContextHolder.get().getUserId(); + String realPass=userDao.selectByUserId(userId).getPassword(); + if (!realPass.equals(HashUtil.getPassword(body.getOldPass()))) { + throw new FormDataException("旧密码错误"); + } + MailInfo info = new MailInfo(body.getNewEmail(),"验证邮箱",); + MailUtil.sendTextMail(); + Constant + + } +} diff --git a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/UserService.java b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/UserService.java index 46222e7..02afc4a 100644 --- a/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/UserService.java +++ b/bookMarkService/business/user/src/main/java/com/fanxb/bookmark/business/user/service/UserService.java @@ -149,7 +149,7 @@ public class UserService { throw new FormDataException("验证码错误"); } RedisUtil.delete(codeKey); - String newPassword = HashUtil.sha1(HashUtil.md5(body.getPassword())); + String newPassword = HashUtil.getPassword(body.getPassword()); userDao.resetPassword(newPassword, body.getEmail()); } diff --git a/bookMarkService/business/user/src/main/resources/mapper/user-userMapper.xml b/bookMarkService/business/user/src/main/resources/mapper/user-userMapper.xml index b2fc498..d2a2439 100644 --- a/bookMarkService/business/user/src/main/resources/mapper/user-userMapper.xml +++ b/bookMarkService/business/user/src/main/resources/mapper/user-userMapper.xml @@ -35,11 +35,7 @@ diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java index b96abd3..f631f3e 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/constant/Constant.java @@ -19,10 +19,6 @@ public class Constant { */ public static final String JWT_KEY = "jwt-token"; - /** - * jwt 过期时间,ms - */ - public static int JWT_EXPIRE_TIME = 60 * 60 * 60 * 1000; /** * 验证码过期时间 diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/User.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/User.java index 5133b47..3d82740 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/User.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/entity/User.java @@ -1,5 +1,6 @@ package com.fanxb.bookmark.common.entity; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; /** @@ -16,6 +17,7 @@ public class User { private String username; private String email; private String icon; + @JsonIgnore private String password; private long createTime; private long lastLoginTime; diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/exception/ExceptionHandle.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/exception/ExceptionHandle.java index e2d3c14..b2cb30e 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/exception/ExceptionHandle.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/exception/ExceptionHandle.java @@ -3,6 +3,7 @@ package com.fanxb.bookmark.common.exception; import com.fanxb.bookmark.common.entity.Result; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; @@ -21,7 +22,9 @@ public class ExceptionHandle { @ExceptionHandler(Exception.class) public Result handleException(Exception e) { CustomException ce; - if (e instanceof CustomException) { + if (e instanceof MethodArgumentNotValidException) { + ce = new FormDataException(((MethodArgumentNotValidException) e).getBindingResult().getFieldErrors().get(0).getDefaultMessage()); + } else if (e instanceof CustomException) { logger.error("捕获到自定义错误:{}", e.getMessage(), e); ce = (CustomException) e; } else { diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/HashUtil.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/HashUtil.java index d07d1e0..fcb8278 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/HashUtil.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/HashUtil.java @@ -1,88 +1,103 @@ -package com.fanxb.bookmark.common.util; - -import com.fanxb.bookmark.common.exception.CustomException; - -import java.security.MessageDigest; - -/** - * 类功能简述:消息摘要计算 - * 类功能详述: - * - * @author fanxb - * @date 2019/7/6 14:31 - */ -public class HashUtil { - - /** - * Description: md5 签名字符串 - * - * @param str 16进制字符串 - * @return java.lang.String - * @author fanxb - * @date 2019/7/6 14:38 - */ - public static String md5(String str) { - return hash(str, "MD5"); - } - - /** - * Description: 使用sha1签名字符串 - * - * @param str sha1签名字符串 - * @return java.lang.String - * @author fanxb - * @date 2019/7/6 14:40 - */ - public static String sha1(String str) { - return hash(str, "SHA1"); - } - - /** - * Description: 根据type签名str - * - * @param str str - * @param type 签名类别 - * @return java.lang.String - * @author fanxb - * @date 2019/7/6 14:40 - */ - public static String hash(String str, String type) { - try { - MessageDigest md = MessageDigest.getInstance(type); - md.update(str.getBytes()); - return bytesToHexString(md.digest()); - } catch (Exception e) { - throw new CustomException(e); - } - } - - - /** - * Description: 字节数组转16进制字符串 - * - * @param bits 字节数组 - * @return java.lang.String - * @author fanxb - * @date 2019/7/6 14:37 - */ - public static String bytesToHexString(byte[] bits) { - StringBuilder builder = new StringBuilder(); - for (int i = 0, length = bits.length; i < length; i++) { - int k = bits[i]; - if (k < 0) { - k += 256; - } - if (k < 16) { - builder.append("0"); - } - builder.append(Integer.toHexString(k)); - } - return builder.toString(); - } - - public static void main(String[] args){ - System.out.println(md5("abc")); - System.out.println(sha1("abc")); - } - -} +package com.fanxb.bookmark.common.util; + +import com.fanxb.bookmark.common.exception.CustomException; + +import java.security.MessageDigest; + +/** + * 类功能简述:消息摘要计算 + * 类功能详述: + * + * @author fanxb + * @date 2019/7/6 14:31 + */ +public class HashUtil { + + /** + * Description: 生成密码 + * + * @param pass 明文 + * @return java.lang.String + * @author fanxb + * @date 2019/9/20 14:34 + */ + public static String getPassword(String pass) { + if (StringUtil.isEmpty(pass)) { + return ""; + } + return HashUtil.sha1(HashUtil.md5(pass)); + } + + /** + * Description: md5 签名字符串 + * + * @param str 16进制字符串 + * @return java.lang.String + * @author fanxb + * @date 2019/7/6 14:38 + */ + public static String md5(String str) { + return hash(str, "MD5"); + } + + /** + * Description: 使用sha1签名字符串 + * + * @param str sha1签名字符串 + * @return java.lang.String + * @author fanxb + * @date 2019/7/6 14:40 + */ + public static String sha1(String str) { + return hash(str, "SHA1"); + } + + /** + * Description: 根据type签名str + * + * @param str str + * @param type 签名类别 + * @return java.lang.String + * @author fanxb + * @date 2019/7/6 14:40 + */ + public static String hash(String str, String type) { + try { + MessageDigest md = MessageDigest.getInstance(type); + md.update(str.getBytes()); + return bytesToHexString(md.digest()); + } catch (Exception e) { + throw new CustomException(e); + } + } + + + /** + * Description: 字节数组转16进制字符串 + * + * @param bits 字节数组 + * @return java.lang.String + * @author fanxb + * @date 2019/7/6 14:37 + */ + public static String bytesToHexString(byte[] bits) { + StringBuilder builder = new StringBuilder(); + for (int i = 0, length = bits.length; i < length; i++) { + int k = bits[i]; + if (k < 0) { + k += 256; + } + if (k < 16) { + builder.append("0"); + } + builder.append(Integer.toHexString(k)); + } + return builder.toString(); + } + + public static void main(String[] args) { + System.out.println(md5("abc")); + System.out.println(sha1("abc")); + } + +} diff --git a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/MailUtil.java b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/MailUtil.java index 2c925e0..f78d10f 100644 --- a/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/MailUtil.java +++ b/bookMarkService/common/src/main/java/com/fanxb/bookmark/common/util/MailUtil.java @@ -1,10 +1,12 @@ package com.fanxb.bookmark.common.util; import com.fanxb.bookmark.common.entity.MailInfo; +import com.fanxb.bookmark.common.exception.CustomException; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; /** @@ -14,6 +16,7 @@ import org.springframework.stereotype.Component; * Time: 16:08 */ @Component +@Slf4j public class MailUtil { private static JavaMailSender mailSender; @@ -25,17 +28,29 @@ public class MailUtil { } @Value("${spring.mail.username}") - public void setFrom(String from){ + public void setFrom(String from) { MailUtil.from = from; } + public static void sendMail(MailInfo info, boolean isHtml) { + try { + + MimeMessageHelper helper = new MimeMessageHelper(mailSender.createMimeMessage()); + helper.setFrom(from); + helper.setTo(info.getReceiver()); + helper.setSubject(info.getSubject()); + helper.setText(info.getContent(), isHtml); + mailSender.send(helper.getMimeMessage()); + } catch (Exception e) { + throw new CustomException("发送邮件失败:" + e.getMessage(), e); + } - public static void sendTextMail(MailInfo info){ - SimpleMailMessage simpleMailMessage = new SimpleMailMessage(); - simpleMailMessage.setFrom(from); - simpleMailMessage.setTo(info.getReceiver()); - simpleMailMessage.setSubject(info.getSubject()); - simpleMailMessage.setText(info.getContent()); - mailSender.send(simpleMailMessage); } + + + public static void sendTextMail(MailInfo info) { + sendMail(info, false); + } + + }