一、需求
当我们想让我们的网站消除恶意注册的情况,我们可以这样做,通过邮箱验证,这样又可以很好的表现出网站的正规性,所以我们在这里提供一个邮箱验证的工具类,先简单说一下步骤,然后再提供完整的工具类
二、工具类的步骤(5个)
1.创建Session
Properties prop=new Properties();
prop.setProperty("mail.host", "stmp.qq.com");
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
Session session=Session.getInstance(prop);
2.通过session得到transport对象
Transport ts=session.getTransport();
3.使用邮箱的用户名和密码链接上邮件服务器,发送邮件时,发送人需要提交邮箱的用户名和密码(授权码)给smtp服务器,用户名和密码都通过验证之后
ts.connect("smtp.qq.com",587,"QQ号","授权码");
注:这里要重点说一下,授权码不是qq密码,这个可以通过以下方式获取
(1)在https://mail.qq.com/登录上你的qq
(2)点击右上角的设置
(3)点击邮箱设置里面的账户
(4)往下翻,会有一个POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,默认是关闭的,开启就行了
(5)开启之后会得到一个授权码
4.创建邮件
Message message = createSimpleMail(fromEmail,toEmail,emailMsg,session);
public static Message createSimpleMail(String fromEmail,String toEmail,String emailMsg,Session session) throws AddressException, MessagingException{
//创建邮件
MimeMessage message=new MimeMessage(session);
//指明邮件的发送人
message.setFrom(new InternetAddress(fromEmail));
//指明收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
//设置邮件的标题
message.setSubject("用户激活");
//设置邮件的内容
message.setContent(emailMsg,"text/html;charset=UTF-8");
//返回创建好的邮件对象
return message;
}
5.发送邮件
ts.sendMessage(message,message.getAllRecipients());
三、具体工具类
public class MailUtils {
public static boolean sendEmail(String fromEmail,String toEmail, String emailMsg) throws MessagingException{
Properties prop=new Properties();
prop.setProperty("mail.host", "stmp.qq.com");
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
//使用javaMail发送邮件的5个步骤
//创建session
Session session=Session.getInstance(prop);
//2.通过session得到transport对象
Transport ts=session.getTransport();
//3.使用邮箱的用户名和密码链接上邮件服务器,发送邮件时,发送人需要提交邮箱的用户名和密码(授权码)给smtp服务器,用户名和密码都通过验证之后
//才能够正常发送邮件给收件人,QQ邮箱需要使用SSL,端口号465或587 ts.connect("smtp.qq.com",587,"QQ号","授权码");
ts.connect("smtp.qq.com",587,"发送者的qq号,去掉@qq.com","授权码");
//4、创建邮件
Message message;
try {
message = createSimpleMail(fromEmail,toEmail,emailMsg,session);
//5、发送邮件
ts.sendMessage(message,message.getAllRecipients());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ts.close();
return true;
}
/**
* 创建邮件
*/
public static Message createSimpleMail(String fromEmail,String toEmail,String emailMsg,Session session) throws AddressException, MessagingException{
//创建邮件
MimeMessage message=new MimeMessage(session);
//指明邮件的发送人
message.setFrom(new InternetAddress(fromEmail));
//指明收件人
message.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
//设置邮件的标题
message.setSubject("用户激活");
//设置邮件的内容
message.setContent(emailMsg,"text/html;charset=UTF-8");
//返回创建好的邮件对象
return message;
}
/**
* 邮箱发送测试
* @param args
* @throws MessagingException
* @throws AddressException
*/
@Test
public void testSendMail() throws AddressException, MessagingException{
sendEmail("发送者的qq号","接受者的qq号");
}
}