package util;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
public class SendCodeUsingEmail implements Email {
//设置发送人email账号和STMP的授权码
private String accoout="3221726446@qq.com";
private String password="vkvfqkrsxluecjga";
//收件人邮箱地址
private String receiver=null;
//code表示验证码
private String code=null;
//发件人STMP的服务器地址
private String SMTPHost="smtp.qq.com";
public SendCodeUsingEmail(String receiver,String code){
this.receiver=receiver;
this.code=code;
}
@Override
public void sendEmail() {
//获取session对象
Session session=createSession();
//创建MimeMessage对象
MimeMessage message=createMessage(session);
//根据session获取邮件传输对象
Transport transport=null;
try {
transport=session.getTransport();
transport.connect(accoout,password);
//发送 message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人
transport.sendMessage(message,message.getAllRecipients());
transport.close();
} catch (MessagingException e) {
e.printStackTrace();
}
}
//配置以及创建session会话
private Session createSession(){
Properties properties=new Properties();
//分别是 使用的协议 服务器的地址 需要请求认证
properties.setProperty("mail.transport.protocol","smtp");
properties.setProperty("mail.smtp.host",SMTPHost);
properties.setProperty("mail.smtp.auth","true");
/*
ssl认证
*/
final String smtpPort = "465";
properties.setProperty("mail.smtp.port", smtpPort);
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.setProperty("mail.smtp.socketFactory.fallback", "false");
properties.setProperty("mail.smtp.socketFactory.port", smtpPort);
//根据配置创建会话服务对象,用于和服务器交互
Session session=Session.getInstance(properties);
session.setDebug(true);
return session;
}
//创建发送消息
private MimeMessage createMessage(Session session){
MimeMessage message=new MimeMessage(session);
//
try {
//设置发送方和收件方
message.setFrom(new InternetAddress(accoout,"235亿心网","UTF-8"));
message.setRecipient(MimeMessage.RecipientType.TO,new InternetAddress(receiver,"235亿心网用户您好","UTF-8"));
//邮件主题
message.setSubject("235亿心网验证系统","UTF-8");
//右键内容
message.setContent("本次注册验证码为:"+code,"text/html;charset=utf-8");
//设置发送时间
message.setSentDate(new Date());
//保存设置
message.saveChanges();
} catch (MessagingException e) {
e.printStackTrace();
}finally {
return message;
}
}
}