本文是说明springboot+maven完成邮箱发送验证功能。
参考:https://www.cnblogs.com/zhangdiIT/p/8184293.html
首先是JavaMail相关依赖
<!-- JavaMail相关依赖 -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency><dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
再来是三个类
一、Mail的实体类
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;/** * TODO.... * * @author liuzhao * @date 2019-12-20 10:00 */
public class MailAuthenticator extends Authenticator{public static String USERNAME = "发送邮件的邮箱";
public static String PASSWORD = "邮箱的登陆密码";public MailAuthenticator() { }
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(USERNAME, PASSWORD);
}
}
二、封装Mail类
public class MailEntity {
private String user;//你的邮箱地址
private String passord;//邮箱授权码
private String host = "smtp.163.com"; //服务器地址
private String from;//发件人
private String to;// 收件人
private String subject;//主题
private String sb; //邮箱内容
private String code;//验证码//getter和setter方法省略,除了邮箱内容
public void setSb(String code){ this.sb="<html><head></head><body><h1>这是一封激活邮件,激活请点击以下链接</h1><h3><a href='http://localhost:8080/register/ActiveServlet?code=" + code + "'>http://localhost:8080/register/ActiveServlet?code=" + code + "</href></h3></body></html>";}
public String getSb() { return sb;}
三、发送操作类
邮件发送操作类
public class MailOperationimplements Runnable{
private MailEntitymailEntity;
public MailOperation(MailEntity mailEntity) {
this.mailEntity = mailEntity;
}/**
* 发送邮件
* @param user 发件人邮箱
* @param password 授权码(注意不是邮箱登录密码)
* @param host
* @param from 发件人
* @param to 接收者邮箱
* @param subject 邮件主题
* @param content 邮件内容
* @return success 发送成功 failure 发送失败
* @throws Exception
*/
public static StringsendMail(String user, String password, String host,
String from, String to, String subject, String content)
throws Exception {
if (to !=null){
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.auth", "true");
MailAuthenticator auth =new MailAuthenticator();
MailAuthenticator.USERNAME = user;
MailAuthenticator.PASSWORD = password;
Session session = Session.getInstance(props, auth);
session.setDebug(true);
try {
MimeMessage message =new MimeMessage(session);
message.setFrom(new InternetAddress(from));
if (!to.trim().equals(""))
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to.trim()));
message.setSubject(subject);
MimeBodyPart mbp1 =new MimeBodyPart(); // 正文
mbp1.setContent(content, "text/html;charset=utf-8");
Multipart mp =new MimeMultipart(); // 整个邮件:正文+附件
mp.addBodyPart(mbp1);
// mp.addBodyPart(mbp2);
message.setContent(mp);
message.setSentDate(new Date());
message.saveChanges();
Transport trans = session.getTransport("smtp");
trans.send(message);
System.out.println(message.toString());
}catch (Exception e){
e.printStackTrace();
return "failure";
}
return "success";
}else{
return "failure";
}
}
public static BooleanmailSetting(MailEntity mailEntity) {
// MailOperation operation = new MailOperation();
try {
//发送验证码
String res = MailOperation.sendMail(mailEntity.getUser(),
mailEntity.getPassword(),
mailEntity.getHost(),
mailEntity.getFrom(),
mailEntity.getTo(),
mailEntity.getSubject(),
mailEntity.getSb().toString());
System.out.println(res);
}catch (Exception e) {
e.printStackTrace();return false;
}
return true;
}
@Override
public void run() {mailSetting(mailEntity);
}}
四、发送邮件
//发送邮件
MailEntity mailEntity =new MailEntity();
mailEntity.setSb(user.getCode());
mailEntity.setTo(user.getMail());
mailEntity.setCode(user.getCode());
new Thread(new MailOperation(mailEntity)).start();
网友评论