javaweb实现邮件发送(给注册邮箱发送验证码,或者激活码)

先上效果图:

javaweb实现邮件发送(给注册邮箱发送验证码,或者激活码)_第1张图片

输入相应的值

点击提交

javaweb实现邮件发送(给注册邮箱发送验证码,或者激活码)_第2张图片

我的邮箱收到相应的信息,我这里点击邮件激活激活账号

这里主要讲如何发送邮箱就可以了(有需要的如何设计激活账号可以留言)

前期准备:

下载email需要的jar,和serverlet的jar包

javaweb实现邮件发送(给注册邮箱发送验证码,或者激活码)_第3张图片

上代码

jsp的代码:<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


注册



用户名:

密码:

邮箱:



regis.action的代码(用于接收值,和调用方法发送邮件)

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");
        request.setCharacterEncoding("UTF-8");
        
        String name =request.getParameter("name");
        String password =request.getParameter("pw");
        String e_mail=request.getParameter("mail");
        String code=UUid.getId()+UUid.getId();//生成随机激活码,在下面的工具类中
        UserInfo usr =new UserInfo();//持久层
        usr.setEmail(e_mail);
        usr.setName(name);
        usr.setPassword(password);
        usr.setUuId(0);
        usr.setCode(code);//存入相应的值
        Service ser =new Service();
        ser.regist(usr);//调用serverce的方法
    }

持久层:

package com.pojo;

public class UserInfo {
    
    private int id;
    private String name;
    private String password;
    private int state;
    private String email;
    private String code;
    public int getState() {
        return state;
    }
    public void setState(int state) {
        this.state = state;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public int getUuId() {
        return state;
    }
    public void setUuId(int uuId) {
        this.state = uuId;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

}


//生成随机激活码的工具类

package com.jdbc;

import java.util.UUID;

public class UUid {
    
    public static String getId()
    {
        
        return UUID.randomUUID().toString().replace("-", "");
    }
    

}


Service 工具类:

package com.service;

import com.dao.UserInfoDao;
import com.daoImpl.UserInfoDaoImpl;
import com.jdbc.Mail;
import com.pojo.UserInfo;

public class Service {
    
    public void regist(UserInfo user)
    {
        UserInfoDao dao =new UserInfoDaoImpl();
        dao.save(user);//这里可以不用管。这是我往数据库存入数据的操作
        //发送邮件
        Mail mail= new Mail();//我写的发送邮件的类
        try {
            mail.sendMail(user.getEmail(), user.getCode());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }

}

Mail类(用于发送邮件)

package com.jdbc;

import java.util.Properties;

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

/**
 * 邮箱发送工具类
 * */
public class Mail {

    /**
     * 发送邮件的方法
     * @param to : 发送对象
     * @param code: 激活码
     * */
    public static void sendMail(String to ,String code) throws  Exception
    {
        //创建连接对象,连接到服务器
        Properties props=new Properties();
        props.setProperty("mail.transport.protocol", "smtp");   // 使用的协议(JavaMail规范要求)
        props.setProperty("mail.smtp.host", "smtp.163.com");   // 发件人的邮箱的 SMTP 服务器地址,,我这里是用163邮箱发送的邮件//需要到自己发送邮箱的设置(在下面讲解)
        props.setProperty("mail.smtp.auth", "true");//请注意本地的邮箱服务器可以不用设置上面的三行
        Session session = Session.getInstance(props,new Authenticator() {

            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // TODO Auto-generated method stub
                return new PasswordAuthentication("[email protected]", "密码(邮箱有一个客户端授权码需要填那个(没有设置的需要去设置,具体设置接下来会讲))");
            }
        });
        //创建邮件对象
        Message msg = new MimeMessage(session);
        //发送一封激活邮件
        msg.setFrom(new InternetAddress("[email protected](发送这封邮箱的邮箱名)"));
        //设置收件人
        msg.setRecipient(RecipientType.TO,new InternetAddress(to) );
        //设置邮件的主题
        msg.setSubject("来自完美课堂的激活文件");
        //设置邮件的正文
        msg.setContent("

激活点击以下链接:

http://localhost:8080/testService/sure.action?code="+code+"

", "text/html;charset=UTF-8");
        Transport.send(msg);
    }
    
}

我用的163邮箱(qq有限需要进行特殊设置,此处省略)

具体设置如下:进入邮箱

javaweb实现邮件发送(给注册邮箱发送验证码,或者激活码)_第4张图片

javaweb实现邮件发送(给注册邮箱发送验证码,或者激活码)_第5张图片

javaweb实现邮件发送(给注册邮箱发送验证码,或者激活码)_第6张图片

javaweb实现邮件发送(给注册邮箱发送验证码,或者激活码)_第7张图片

javaweb实现邮件发送(给注册邮箱发送验证码,或者激活码)_第8张图片

设置成你需要的

(需要的jar审核还未通过,有需要可以到我的主页下载或自行到网上下载)

你可能感兴趣的:(java,javweb)