猿创征文|瑞吉外卖——移动端_邮箱验证码登录

个人名片:

博主酒徒ᝰ.
专栏瑞吉外卖
个人简介沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志如果决意去做一件事了就不要再问自己和别人值不值得。

本项目基于B站黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + mybatis plus开发核心技术的真java实战项目。

视频链接【黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + mybatis
plus开发核心技术的真java实战项目】 https://www.bilibili.com/video/BV13a411q753?
点击观看

一、原因

对于个人来说,几乎是申请不到短信的模板签名。这些模板一般是企业所用。
我们只是练习项目,没有必须花费金钱去申请到签名,最好却只有一两次。
最后,也是最重要的一点。白嫖的才是最香的。

自己添加
因为前端代码修改的话很麻烦,所有就直接将验证码发送发送到邮箱了。
在发送验证码操作中进行添加如下代码。

二、邮箱

  1. 邮箱的优点

QQ邮箱向用户提供安全、稳定、快速、便捷电子邮件服务的邮箱产品,已为超过1亿的邮箱用户提供免费和增值邮箱服务。
QQ邮件服务以高速电信骨干网为强大后盾,独有独立的境外邮件出口链路,免受境内外网络瓶颈影响,全球传信。
采用高容错性的内部服务器架构,确保任何故障都不影响用户的使用,随时随地稳定登录邮箱,收发邮件通畅无阻。

  1. 代码实现
    在生成验证码,紧接着执行以下代码,将验证码发送到你的邮箱。需要有两个邮箱才可以哦!
    一个邮箱发送,一个邮箱接受。
//QQ邮箱发送验证码
try {
    
    
    userService.send_email("接收邮箱", "邮件标题");
} catch (Exception e) {
    
    
    throw new RuntimeException(e);
}

完整代码如下:

/**
* 发送验证码
* @param user
* @param session
* @return
*/
@PostMapping("/sendCode")
public R<String> sendCode(@RequestBody User user, HttpSession session){
    
    

    //获取移动端输入手机号
    String phone = user.getPhone();

    //手机号不为空,则发送验证码。
    if (StringUtils.isNotEmpty(phone)){
    
    
        //生成验证码
        String code = ValidateCodeUtils.generateValidateCode(4).toString();
        log.info("code:{}", code);

        //短信发送验证码 就不写了

        //QQ邮箱发送验证码
        try {
    
    
            userService.send_email("接收邮箱", "邮件标题");
        } catch (Exception e) {
    
    
            throw new RuntimeException(e);
        }
        //保存验证码 session
        session.setAttribute(phone, code);
        return R.success("验证码发送成功");
    }
    return R.error("验证码发送失败");
}

在IUserService中建立send_email接口
这里为了更好的阅读,就将业务写入了业务层中,其实,每一个地方都应该这么做。

void send_email(String email, String msg) throws Exception;

在实现类中实现方法

package com.itheima.reggie.service.impl;

import com.itheima.reggie.entity.User;
import com.itheima.reggie.mapper.UserMapper;
import com.itheima.reggie.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.itheima.reggie.utils.Email_Util;
import org.springframework.stereotype.Service;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.util.Date;
import java.util.Properties;

/**
 * <p>
 * 用户信息 服务实现类
 * </p>
 *
 * @author 酒徒
 * @since 2022-09-04
 */
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
    
    

    @Override
    public void send_email(String email, String msg) throws Exception{
    
    
        String to = email;	//发送到哪个邮箱,及目标邮箱
        String subject = "验证码";	//邮件标题
        String content = msg;		//邮件内容
        Properties properties = new Properties();
        properties.put("mail.smtp.host", "smtp.qq.com");
        properties.put("mail.smtp.port", "25");//邮箱端口号
        properties.put("mail.smtp.auth", "true");
        Authenticator authenticator = new Email_Util("发送邮箱", "发送邮箱的授权码,这个网上很容易找到教程的");//你的邮箱,与授权码
        javax.mail.Session sendMailSession = javax.mail.Session.getDefaultInstance(properties, authenticator);
        MimeMessage mailMessage = new MimeMessage(sendMailSession);
        mailMessage.setFrom(new InternetAddress("发送邮箱"));//发送邮件的地址/就填你的qq邮箱
        // Message.RecipientType.TO属性表示接收者的类型为TO
        mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
        mailMessage.setSubject(subject, "UTF-8");
        mailMessage.setSentDate(new Date());
        // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
        Multipart mainPart = new MimeMultipart();
        // 创建一个包含HTML内容的MimeBodyPart
        BodyPart html = new MimeBodyPart();
        html.setContent(content.trim(), "text/html; charset=utf-8");
        mainPart.addBodyPart(html);
        mailMessage.setContent(mainPart);
        Transport.send(mailMessage);
    }
}

猜你喜欢

转载自blog.csdn.net/m0_65144570/article/details/126814904