平时会遇到最多的是注册的时候要求填写用户邮箱,然后发送激活邮件到用户的邮箱里面进行激活账号,也有很多的是通过邮件来通知用户,现在说一下在注册的时候怎么发送激活邮件到用户邮箱,并且怎么激活用户。
能实现发送邮箱的前提是导入jar包mail.jar,可以上百度搜索下载,把mail.jar放到WebRoot–>WEB-INF–>lib下。
邮件协议:smtp:发送邮件协议;pop :接收邮件协议
效果图:
点击地址的激活码
点击继续前往:
激活成功,点击登录
这就是通过邮箱进行激活账号的步骤。
接下来看如何通过代码实现:
导入mail.jar包之后创建一个类,然后在里面配置邮箱信息,如下:
package cn.itcast.shop.utils;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
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;
/**
* 邮件发送工具类
*
* @author LMS
*
*/
public class MailUtils {
/**
* 发送邮件的方法
*
* @param to
* :收件人
* @param code
* :激活码
*/
public static void sendMail(String to, String code) {
/**
* 1.获得连接对象
* 2.获得一个Session对象
* 3.创建一个代表邮件的对象Message
* 4.发送邮件Transport
*/
// 1.获得连接对象
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "SMTP");
props.setProperty("mail.host", "smtp.QQ.com");
props.setProperty("mail.smtp.auth", "true");
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
// 发送者的账号 和 授权码
return new PasswordAuthentication("lms0809",
"授权码");
}
};
// 2.获得一个Session对象
Session session = Session.getInstance(props, auth);
// 3.创建一个代表邮件的对象Message
Message message = new MimeMessage(session);
// 4.发送邮件Transport
try {
// 设置发件人
message.setFrom(new InternetAddress("lms0809@qq.com"));
// 设置收件人,抄送CC,密送BCC
message.addRecipient(RecipientType.TO, new InternetAddress(to));
// 设置标题
message.setSubject("来自网上商城官方激活邮件");
// 设置邮件正文
message.setContent(
"<h1>网上商城商城官方激活邮件!点下面链接完成激活操作!</h1><h3><a href='http://localhost:8080/shop/user_active.action?code="
+ code
+ "'>http://localhost:8080/shop/user_active.action?code="
+ code + "</a></h3>", "text/html;charset=utf-8");
// 发送邮件
Transport.send(message);
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
激活码需要到发送人的邮箱里面设置,因为我这里是用QQ邮箱为例子发送,所以打开QQ邮箱 --> 设置 --> 账户 --> 找到授权码
激活成功返回的方法:
/**
* 用户激活的方法
*/
public String active(){
//根据激活码查询用户:
User existUser = userService.findByCode(user.getCode());
//判断
if(existUser == null){
//激活码错误
this.addActionMessage("激活失败:激活码错误");
}else{
//激活码成功
//修改用户状态
existUser.setState(1);
existUser.setCode(null);
userService.update(existUser);
this.addActionMessage("激活成功,请去登录!");
}
return "msg";
}
这样子就可以简单地完成邮箱发送激活码了。