先上效果图:
输入相应的值
点击提交
我的邮箱收到相应的信息,我这里点击邮件激活激活账号
这里主要讲如何发送邮箱就可以了(有需要的如何设计激活账号可以留言)
前期准备:
下载email需要的jar,和serverlet的jar包
上代码
jsp的代码:<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
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("
我用的163邮箱(qq有限需要进行特殊设置,此处省略)
具体设置如下:进入邮箱
设置成你需要的
(需要的jar审核还未通过,有需要可以到我的主页下载或自行到网上下载)