packagecom.bgi.util;importorg.springframework.core.io.ClassPathResource;importjavax.mail.Address;importjavax.mail.Session;importjavax.mail.Transport;importjavax.mail.internet.InternetAddress;importjavax.mail.internet.MimeMessage;importjava.io.IOException;importjava.util.Date;importjava.util.Properties;public classEmailUtil {
//获取属性文件中的值,建议把配置的信息放到属性文件中,方便修改和获取private static Properties properties = newProperties();static{try{
//加在属性文件
properties.load(new ClassPathResource("properties/email.properties").getInputStream());
}catch(IOException e) {
}
}public static String SMTPSERVER = properties.getProperty("smtp.server"); //从属性文件中获取值其中key为smtp.serverpublic static String SMTPPORT = properties.getProperty("smtp.port"); //端口号 465 465 465 不是456public static String ACCOUT = properties.getProperty("smtp.account");//账户名:我的是163账户,此账户必须在设置中开启授权码授权public static String PWD = properties.getProperty("smtp.pwd"); //授权密码public static String users = properties.getProperty("email.users"); //这里是发送给多个用户多个用户用都好分割xxx@xx.com,xxx@xx.compublic static voidsendEmail(String content){try{//创建邮件配置
Properties props = newProperties();
props.setProperty("mail.transport.protocol", "smtp"); //使用的协议(JavaMail规范要求)
props.setProperty("mail.smtp.host", SMTPSERVER); //发件人的邮箱的 SMTP 服务器地址
props.setProperty("mail.smtp.port", SMTPPORT);
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.smtp.auth", "true"); //需要请求认证
props.setProperty("mail.smtp.ssl.enable", "true");//开启ssl//根据邮件配置创建会话,注意session别导错包
Session session =Session.getDefaultInstance(props);//开启debug模式,可以看到更多详细的输入日志
session.setDebug(true);//创建邮件
MimeMessage message =createEmail(session,users,content); //将用户和内容传递过来//获取传输通道
Transport transport =session.getTransport();
transport.connect(SMTPSERVER,ACCOUT, PWD);//连接,并发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}catch(Exception e) {
e.printStackTrace();
}
}public static MimeMessage createEmail(Session session,String users,String content) throwsException {//根据会话创建邮件
MimeMessage msg = newMimeMessage(session);//address邮件地址, personal邮件昵称, charset编码方式
InternetAddress fromAddress = newInternetAddress(ACCOUT,"中间件推送", "utf-8");//设置发送邮件方
msg.setFrom(fromAddress);
// 单个可以直接这样创建//InternetAddress receiveAddress = new InternetAddress();//设置邮件接收方
Address[] internetAddressTo = newInternetAddress().parse(users);