JavaWeb邮箱注册激活账号
邮箱工具类MailUtil
/**
* 发邮件工具类
*/
public final class MailUtils {
private static final String USER = "xxxxxxxx@qq.com"; // 发件人称号,同邮箱地址
private static final String PASSWORD = "xxxxxxxxxx"; // 如果是qq邮箱可以使户端授权码,或者登录密码
/**
*
* @param to 收件人邮箱
* @param text 邮件正文
* @param title 标题
*/
/* 发送验证信息的邮件 */
public static boolean sendMail(String to, String text, String title){
try {
final Properties props = new Properties();
props.put("mail.smtp.auth", "true");
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;
}
}
用法
1.更改工具类中的参数,设置发送邮件的账号信息。
2.邮件内容可用超链接指定url同时传递通过工具类获得的唯一激活码(获取方法在后文),激活Servlet可根据获取的激活码进行查询用户,若存在则注册状态为成功。
所以在注册的时候,要调用工具类获取激活码存入数据库,以便后面验证
String text ="邮件内容";
MailUtils.sendMail(user.getEmail(),text,"邮件主题");
注意事项
1.QQ邮箱要获取授权码,并传递到password成员变量上。
2.QQ邮箱会把发送的验证邮件里的连接提示危险,于是就不能进行正常转跳,可复制URL连同激活码参数,重新在地址栏粘贴(暂时不知道怎么解决);
激活码工具类UuidUtil
/**
* 产生UUID随机字符串工具类
*/
public final class UuidUtil {
private UuidUtil(){}
public static String getUuid(){
return UUID.randomUUID().toString().replace("-","");
}
/**
* 测试
*/
public static void main(String[] args) {
System.out.println(UuidUtil.getUuid());
System.out.println(UuidUtil.getUuid());
System.out.println(UuidUtil.getUuid());
System.out.println(UuidUtil.getUuid());
}
}
用法
1.该类会创建全球唯一的激活码,(重复的概率微乎其微,中500万奖差不多概率)
2.静态调用
// 生成唯一的激活码
String code = UuidUtil.getUuid();