用java实现邮件发送验证码

简介: java实现邮件发送验证码网易邮箱开通POP3SMTP服务的步骤java实现邮件发送验证码   建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SMTP服务没弄好。

java实现邮件发送验证码

   建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SMTP服务没弄好。所以建议注册个别的邮箱,我就申请了个网易163邮箱瞬间就好了。所以去申请个别的邮箱吧。

  用邮件发送验证码,首先需要jar包。我写的代码只需要mail.jar,没有的话可以给我留言,我给你发个。

废话不说了直接上代码(这个代码就是个工具类直接用就好)

package com.itheima.utils;

import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;

public class MailUtils {

    public static void sendMail(String email, String emailMsg) throws AddressException, MessagingException {
        // 1.创建一个程序与邮件服务器会话对象 Session
        // 创建参数配置, 用于连接邮件服务器的参数配置
        Properties props = new Properties(); // 参数配置 
        props.setProperty("mail.transport.protocol", "SMTP");// 使用的协议(JavaMail规范要求)
        props.setProperty("mail.host", "smtp.163.com");// // 发件人的邮箱的 SMTP 服务器地址
        props.setProperty("mail.smtp.auth", "true");//请求认证,参数名称与具体实现有关 指定验证为true

        // 创建验证器
        Authenticator auth = new Authenticator() {
            @Override
            public PasswordAuthentication getPasswordAuthentication() {
                // 网易邮箱Yang_li_g 用户名 hao123授权码,改为自己的账号和密码
                return new PasswordAuthentication("Yang_li_g", "hao123");
            }
        };

        Session session = Session.getInstance(props, auth);

        // 2.创建一个Message,它相当于是邮件内容
        Message message = new MimeMessage(session);
        //这里也要改和上面对应,注意后缀和上面设置的一样不然会报错
        message.setFrom(new InternetAddress("Yang_li_g@163.com")); // 设置发送者

        message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 设置发送方式与接收者

        message.setSubject("用户激活");
        // message.setText("这是一封激活邮件,请<a href='#'>点击</a>");

        message.setContent(emailMsg, "text/html;charset=utf-8");

        // 3.创建 Transport用于将邮件发送

        Transport.send(message);
    }
}

这里是servlet的代码,响应代码如下

        // 发送激活邮件    activeCode:是验证码
        String emailMsg = "恭喜您注册成功,请点击下面的连接进行激活账户" + "<a href='http://localhost:8080/Shop/active?activeCode="
                + activeCode + "'>" + "http://localhost:8080/Shop/active?activeCode=" + activeCode + "</a>";
        try {
            //user.getEmail()  :是注册人的邮件用户名
            MailUtils.sendMail(user.getEmail(), emailMsg);
        } catch (MessagingException e) {
            e.printStackTrace();
        }

邮件内容你就自己随便写,我这里写的比较简单,实现就好。

网易邮箱开通POP3/SMTP服务的步骤

先点击设置–》POP3/SMTP/IMAP—》找到开启的选项点击开启—》开启成功后设置密码就好了

这里写图片描述

这里写图片描述

我这是设置好的可以看下。设置好了后就可以实现用邮件发验证码了。

相关文章
java实现动态验证码源代码——绘制验证码的jsp
java实现动态验证码源代码——绘制验证码的jsp
|
前端开发 Java
java实现动态验证码源代码——jsp页面
java实现动态验证码源代码——jsp页面
|
Java 机器人 网络安全
Java代码快速生成验证码
Java代码快速生成验证码
341 0
|
9月前
|
缓存 Java 应用服务中间件
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
1671 5
|
JavaScript Java
java生成验证码并进行验证
java生成验证码并进行验证
使用java底层实现邮件的发送(含测试,源码)
使用java底层实现邮件的发送(含测试,源码)
|
消息中间件 缓存 监控
【Java笔记+踩坑】SpringBoot基础3——开发。热部署+配置高级+整合NoSQL/缓存/任务/邮件/监控
springboot的热部署、配置的宽松绑定和校验、任务、邮件、监控、springboot整合JdbcTemplate,h2等sql技术、整合redis,mongodb,es等nosql技术、整合redis,Memcached,jetcache,j2cache等缓存技术、整合ActiveMQ,RabbitMQ,RocketMQ,Kafka等消息的中间件的入门、整合缓存/任务/邮件/监控
【Java笔记+踩坑】SpringBoot基础3——开发。热部署+配置高级+整合NoSQL/缓存/任务/邮件/监控
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
151 1
|
Java
JAVA生产随机生成验证码
Java代码实现随机生成指定位数的数字、大小写字母混合的验证码。使用`Random`类生成类型(0-数字,1-大写字母,2-小写字母),然后根据类型转换为相应字符。示例代码展示了一个4位验证码的生成,并附有实现结果图和过程分析。
408 2
|
Java API Maven
如何在Java中实现邮件发送功能?
如何在Java中实现邮件发送功能?