From f9d95718cd8c88435efd3f7df25852547fbbbb23 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Mon, 25 Dec 2023 15:37:24 +0800 Subject: [PATCH] =?UTF-8?q?=E9=82=AE=E7=AE=B1=E9=AA=8C=E8=AF=81=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++- .../com/peanut/common/utils/MailUtil.java | 45 +++++++++++++++++++ .../book/controller/MyUserController.java | 42 ++++++++++++++--- .../modules/book/entity/MyUserEntity.java | 4 ++ 4 files changed, 91 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/peanut/common/utils/MailUtil.java diff --git a/pom.xml b/pom.xml index b770fe00..49cd7c57 100644 --- a/pom.xml +++ b/pom.xml @@ -92,7 +92,11 @@ org.springframework.boot spring-boot-starter-data-redis - + + com.sun.mail + javax.mail + 1.6.2 + cn.songxinqiang com.baidu.ueditor diff --git a/src/main/java/com/peanut/common/utils/MailUtil.java b/src/main/java/com/peanut/common/utils/MailUtil.java new file mode 100644 index 00000000..fc34b793 --- /dev/null +++ b/src/main/java/com/peanut/common/utils/MailUtil.java @@ -0,0 +1,45 @@ +package com.peanut.common.utils; + +import javax.mail.Authenticator; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.util.Properties; + +public class MailUtil { + + private final static String mailName = "fengzidushu@163.com"; + private final static String mailToken = "GJIPUCQLQYTMDMPH"; + + public static void sendMail(String title,String content,String receiveAddress) throws Exception{ + //smtp服务器 + Properties pros=new Properties(); + pros.put("mail.smtp.host", "smtp.163.com");//主机名 + pros.put("mail.smtp.port", "25");//主机端口号 + pros.put("mail.smtp.auth", "true");//是否需要用户认证 + pros.put("mail.smtp.starttls.enable", "true");//启用TLS加密 + //创建会话 + Session session=Session.getInstance(pros,new Authenticator(){ + @Override + protected javax.mail.PasswordAuthentication getPasswordAuthentication(){ + return new javax.mail.PasswordAuthentication(mailName, mailToken); + } + }); +// System.out.println(session); + //设置debug模式便于调试 + session.setDebug(true); + MimeMessage message=new MimeMessage(session); + //邮件标题 + message.setSubject(title); + //邮件内容(文本) + message.setText(content,"utf-8"); + //设置发送方地址 + message.setFrom(new InternetAddress(mailName)); + //设置收件方地址 + message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(receiveAddress)); + //发送 + Transport.send(message); + } + +} diff --git a/src/main/java/com/peanut/modules/book/controller/MyUserController.java b/src/main/java/com/peanut/modules/book/controller/MyUserController.java index d7b9877e..e319863c 100644 --- a/src/main/java/com/peanut/modules/book/controller/MyUserController.java +++ b/src/main/java/com/peanut/modules/book/controller/MyUserController.java @@ -3,7 +3,6 @@ package com.peanut.modules.book.controller; import java.math.BigDecimal; import java.util.*; import java.util.concurrent.TimeUnit; - import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpUtil; import com.alibaba.druid.util.StringUtils; @@ -13,6 +12,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.peanut.common.utils.MD5Utils; +import com.peanut.common.utils.MailUtil; import com.peanut.modules.book.entity.*; import com.peanut.modules.book.service.*; import com.peanut.modules.book.to.PageIdDto; @@ -26,12 +26,10 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; - import com.peanut.common.utils.PageUtils; import com.peanut.common.utils.R; - /** * * @@ -217,6 +215,32 @@ public class MyUserController { return R.ok(); } + + /** + * 常规注册 发送邮箱验证码 + */ + @RequestMapping("/getMailCaptcha") + public R getMailCaptcha(String email) throws Exception { + //验证一分钟内是否已经发过 + String redisCode = redisTemplate.opsForValue().get("RegistEMail" + email); + if (!StringUtils.isEmpty(redisCode)) { + long l = Long.parseLong(redisCode.split("_")[1]); + if (System.currentTimeMillis() - l < 60000) { + //60s 内不能再发 + return R.error(500,"邮箱验证码频率过高,请稍后再试!"); + } + } + //生成随机五位数 + Random random = new Random(); + String code = random.nextInt(99999) + ""; + String timeCode = code + "_"+System.currentTimeMillis(); + //redis 缓存验证码 + redisTemplate.opsForValue().set("RegistEMail"+email,timeCode,5, TimeUnit.MINUTES); + //发送 + MailUtil.sendMail("疯子读书邮箱验证码",code,email); + return R.ok(); + } + @RequestMapping("/register") public R register(@RequestParam("tel") String tel, @RequestParam("code") String code, @@ -298,8 +322,13 @@ public class MyUserController { public R login(@RequestParam("phone") String phone, @RequestParam("password") String password) { - - MyUserEntity user = userService.getBaseMapper().selectOne(new QueryWrapper().eq("tel", phone)); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper(); + if (phone.contains("@")) { + wrapper.eq(MyUserEntity::getEmail,phone); + }else { + wrapper.eq(MyUserEntity::getTel,phone); + } + MyUserEntity user = userService.getBaseMapper().selectOne(wrapper); if (user == null) { return R.error(500,"用户不存在!"); } @@ -616,6 +645,9 @@ public class MyUserController { } + + + // // /** // * @Description: app微信登陆 diff --git a/src/main/java/com/peanut/modules/book/entity/MyUserEntity.java b/src/main/java/com/peanut/modules/book/entity/MyUserEntity.java index 563c04cb..04a4602f 100644 --- a/src/main/java/com/peanut/modules/book/entity/MyUserEntity.java +++ b/src/main/java/com/peanut/modules/book/entity/MyUserEntity.java @@ -48,6 +48,10 @@ public class MyUserEntity implements Serializable { * 电话 */ private String tel; + /** + * 邮箱 + */ + private String email; /** * 密码 */