[JAVA] 后端java——发送邮件——实现邮件验证码登录

3155 1
123456789qwe 2022-11-13 13:54:24 | 显示全部楼层 |阅读模式
使用技术

    jdk       >=1.8
    maven  >=3.0
    springboot

准备工作

登录邮箱——打开设置——开启SMTP服务
     创建springboot项目
        导入依赖
            <!--SpringBoot集成邮件发送启动器坐标-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        编写配置文件application.yml
        spring:
           mail:
                host: smtp.163.com
               default-encoding: utf-8
               username: 网易邮箱@163.com
               password: SMTP开启后提供的密码
实现邮箱使用方法
@Component
public class MailServiceImpl {
    @Autowired
    private JavaMailSender mailSender;

    @Value("${spring.mail.username}")
    private String from;

    /**
     * 发送普通文本邮件
     */
    public void sendSimpleMail(String to, String subject, String content) throws MailException {
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from); // 邮件发送者
        message.setTo(to); // 邮件接受者
        message.setSubject(subject); // 主题
        message.setText(content); // 内容

        mailSender.send(message);
    }

    /**
     * 发送带图片邮件邮件
     */
    public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom(from);
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(content, true);
        File file = new File(rscPath);
        FileSystemResource res = new FileSystemResource(file);
        helper.addInline(rscId, res);

        mailSender.send(message);
    }

    /**
     * 发送HTML邮件
     */
    public void sendHtmlMail(String to, String subject, String content) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        //true 表&#12144;示需要创建&#12032;一个 multipart message
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom(from);
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(content, true);
        mailSender.send(message);

    }

    /**
     * 发送带附件的邮件
     */
    public void sendAttachmentsMail(String to, String subject, String content, String filePath) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message, true);
        helper.setFrom(from);
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(content, true);
        FileSystemResource file = new FileSystemResource(new File(filePath));
        String fileName = file.getFilename();
        helper.addAttachment(fileName, file);

        mailSender.send(message);
    }
}

实现步骤
1.后端生成验证码
2.后端将验证码保存到缓存或者数据库中(建议保存的redis实现方便自带过期功能,但占用内存大)
3.后端将验证码发送到用户邮箱
4.用户查看邮箱验证码之后,填写发送
5.后端和生成的验证码进行对比实现登录


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

123456789qwe

初入联盟

关注
  • 5
    主题
  • 0
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行