电子邮箱激活及应用
作者:互联网
电子邮箱的激活
1.导入jar包(mail.jar)
2.进入qq邮箱或者其他类型邮箱进入如下设置开启,发送短信校验,获得第一行的授权码粘下来保存好(下一步要用)
3.邮箱工具类
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public final class MailUtils {
//设置自己的邮箱号码(修改下方qq邮箱即可)
private static final String USER = "123@qq.com";
//这个密码就是上一步让记下来的
private static final String PASSWORD = "zzyzaiivljscbbjg";
public static boolean sendMail(String to, String text, String title) {
try {
final Properties props = new Properties();
props.put("mail.smtp.auth", "true");
// 发送协议qq(也可以设置其他类型)
props.put("mail.smtp.host", "smtp.qq.com");
// 发件人的账号
props.put("mail.user", USER);
// 发件人的密码
props.put("mail.password", PASSWORD);
//用于进行SMTP进行身份验证
Authenticator authenticator = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 用户名、密码
String userName = props.getProperty("mail.user");
String password = props.getProperty("mail.password");
return new PasswordAuthentication(userName, password);
}
};
Session mailSession = Session.getInstance(props, authenticator);
//创建邮件消息
MimeMessage message = new MimeMessage(mailSession);
//设置发件人
String username = props.getProperty("mail.user");
InternetAddress form = new InternetAddress(username); // 发件人邮箱
message.setFrom(form);
// 设置收件人
InternetAddress toAddress = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO, toAddress);
//设置邮件标题
message.setSubject(title);
//设置邮件的内容体
message.setContent(text, "text/html;charset=UTF-8");
// 发送邮件
Transport.send(message);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
// 测试
public static void main(String[] args) {
MailUtils.sendMail("电子邮箱", "正文", "标题");
// 测试的为收件人qq邮箱自定义
MailUtils.sendMail("123@qq.com", "你好,这是一封测试邮件,无需回复", "测试");
//提示:已发送
System.out.println("已发送");
}
}
4.应用(部分注册)
DaoImpl层
//添加用户
@Override
public int add(User user) {
try {
String sql = "insert into user(uid,username,password,name,email,birthday,sex,state,code) values(?,?,?,?,?,?,?,?,?)" ;
//更新操作
int count = qr.update(sql, user.getUid(),
user.getUsername(),
user.getPassword(),
user.getName(),
user.getEmail(),
user.getBirthday(),
user.getSex(),
user.getState(),
user.getCode()) ;
return count ;
} catch (SQLException e) {
e.printStackTrace();
return 0;
}
}
//通过激活码查询用户(激活码是随机生成的)
@Override
public User selectUserByCode(String code) {
//sql
try {
String sql = "select * from user where code = ?" ;
User user = qr.query(sql, new BeanHandler<User>(User.class), code) ;
return user ;
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
//更新用户
@Override
public void updateUser(User user) {
try {
String sql = "update user set state=? where uid = ?";
qr.update(sql, user.getState(),user.getUid());
} catch (SQLException e) {
e.printStackTrace();
}
}
ServiceImpl层
//执行注册服务
@Override
public boolean register(User user) {
if(ud.addUser(user)>0) {
//注册的同时需要给注册的邮箱发送一个超链接
String content = "<a href='http://localhost:8080/nov_27/user?method=active&code="+user.getCode()+"'>这是一封激活邮件,请您点击激活邮箱</a>";
//发邮箱
MailUtils.sendMail(user.getEmail(), content,"用户邮箱激活");
return true;
}
return false;
}
//注册成功之后,检测code是否有对应的用户
@Override
public User activerUser(String code) {
User user = ud.finUserByCode(code);
if(user==null) {
return null;
}
user.setState(1);
ud.updateUser(user);
return user;
}
}
Servlet层
//用户激活邮件的业务
public String active(HttpServletRequest request, HttpServletResponse response) {
String code = request.getParameter("code");
User user = us.activerUser(code);
if (user != null) {
//若满足条件的用户存在,则提示信息页面显示,邮箱激活成功,并可点击请您登陆跳转到登录页面
request.setAttribute("msg", "邮件激活成功,<a href='http://localhost:8080/nov_27/user?method=loginUI'>请您登录</a>");
} else {
//若不存在,则提示邮箱激活失败
request.setAttribute("msg", "您的邮件激活失败");
}
return "/jsp/msg.jsp";
}
标签:code,return,String,邮箱,user,应用,mail,激活,电子邮箱 来源: https://blog.csdn.net/a17151314/article/details/110678467