|
@ -0,0 +1,193 @@
|
|
|
package com.yihu.jw.base.util;
|
|
|
|
|
|
import com.sun.mail.util.MailSSLSocketFactory;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import javax.mail.*;
|
|
|
import javax.mail.internet.InternetAddress;
|
|
|
import javax.mail.internet.MimeBodyPart;
|
|
|
import javax.mail.internet.MimeMessage;
|
|
|
import javax.mail.internet.MimeMultipart;
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.Properties;
|
|
|
|
|
|
/**
|
|
|
* Created by zdm on 2018/11/21.
|
|
|
*/
|
|
|
@Component
|
|
|
public class SendEmailUtils {
|
|
|
private static String username;
|
|
|
private static String smtp;
|
|
|
private static String host;
|
|
|
private static String port;
|
|
|
private static String auth;
|
|
|
private static String timeout;
|
|
|
private static String password;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* mimeMessage发送邮件
|
|
|
* @param email 目标邮箱
|
|
|
* @param content 邮件主体内容
|
|
|
* @param subject 邮件标题
|
|
|
* @return
|
|
|
*/
|
|
|
public static boolean mimeMessage(String email,String content,String subject){
|
|
|
// 1.创建一个程序与邮件服务器会话对象 Session
|
|
|
Properties props = new Properties();
|
|
|
props.setProperty("mail.transport.protocol", smtp);// 连接协议
|
|
|
props.setProperty("mail.smtp.host", host);// 连接协议
|
|
|
props.setProperty("mail.smtp.port", port);// 连接协议
|
|
|
// 指定验证为true
|
|
|
props.setProperty("mail.smtp.auth", auth);
|
|
|
props.setProperty("mail.smtp.timeout",timeout);
|
|
|
props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
|
|
|
// 验证账号及密码,密码需要是第三方授权码
|
|
|
Authenticator auth = new Authenticator() {
|
|
|
public PasswordAuthentication getPasswordAuthentication(){
|
|
|
return new PasswordAuthentication(username, password);
|
|
|
}
|
|
|
};
|
|
|
Session session = Session.getInstance(props, auth);
|
|
|
|
|
|
// 2.创建一个Message,它相当于是邮件内容
|
|
|
MimeMessage message = new MimeMessage(session);
|
|
|
try {
|
|
|
//防止成为垃圾邮件,披上outlook的马甲
|
|
|
message.addHeader("X-Priority", "3");
|
|
|
|
|
|
message.addHeader("X-MSMail-Priority", "Normal");
|
|
|
|
|
|
message.addHeader("X-Mailer", "Microsoft Outlook Express 6.00.2900.2869"); //本文以outlook名义发送邮件,不会被当作垃圾邮件
|
|
|
|
|
|
message.addHeader("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2900.2869");
|
|
|
|
|
|
message.addHeader("ReturnReceipt", "1");
|
|
|
// 设置发送者
|
|
|
String nick=javax.mail.internet.MimeUtility.encodeText("厦门i健康");
|
|
|
message.setFrom(new InternetAddress(nick+" <"+username+">"));
|
|
|
// 设置发送方式与接收者
|
|
|
message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(email));
|
|
|
// 设置主题
|
|
|
message.setSubject(subject);
|
|
|
//创建消息主体
|
|
|
MimeBodyPart messageBodyPart = new MimeBodyPart();
|
|
|
//发送的内容
|
|
|
messageBodyPart.setText(content);
|
|
|
// 创建多重消息
|
|
|
Multipart multipart = new MimeMultipart();
|
|
|
multipart.addBodyPart(messageBodyPart);
|
|
|
// 设置邮件消息发送的时间
|
|
|
message.setSentDate(Calendar.getInstance().getTime());
|
|
|
// 设置内容
|
|
|
message.setContent(multipart, "text/html;charset=utf-8");
|
|
|
// 3.创建 Transport用于将邮件发送
|
|
|
Transport.send(message);
|
|
|
}catch (Exception e){
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 邮件发送
|
|
|
* @param email 目标邮箱
|
|
|
* @param content 邮件主体内容
|
|
|
* @param subject 邮件主题
|
|
|
* @return
|
|
|
*/
|
|
|
public static boolean sendMessage(String email,String content,String subject){
|
|
|
// 配置
|
|
|
Properties prop=new Properties();
|
|
|
// 设置邮件服务器主机名,这里是163
|
|
|
prop.put("mail.host",host );
|
|
|
// 发送邮件协议名称
|
|
|
prop.put("mail.transport.protocol",smtp);
|
|
|
// 是否认证
|
|
|
prop.put("mail.smtp.auth", auth);
|
|
|
|
|
|
try {
|
|
|
// SSL加密
|
|
|
MailSSLSocketFactory sf = null;
|
|
|
sf = new MailSSLSocketFactory();
|
|
|
// 设置信任所有的主机
|
|
|
sf.setTrustAllHosts(true);
|
|
|
prop.put("mail.smtp.ssl.enable", true);
|
|
|
prop.put("mail.smtp.ssl.socketFactory", sf);
|
|
|
|
|
|
// 创建会话对象
|
|
|
Session session = Session.getInstance(prop, new Authenticator() {
|
|
|
// 认证信息,需要提供"用户账号","授权码"
|
|
|
public PasswordAuthentication getPasswordAuthentication() {
|
|
|
return new PasswordAuthentication(username, password);
|
|
|
}
|
|
|
});
|
|
|
// 是否打印出debug信息
|
|
|
// session.setDebug(true);
|
|
|
|
|
|
// 创建邮件
|
|
|
Message message = new MimeMessage(session);
|
|
|
// 邮件发送者
|
|
|
message.setFrom(new InternetAddress(username));
|
|
|
// 邮件接受者
|
|
|
message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
|
|
|
// 邮件主题
|
|
|
message.setSubject(subject);
|
|
|
message.setContent(content, "text/html;charset=UTF-8");
|
|
|
// Transport.send(message);
|
|
|
// 邮件发送
|
|
|
Transport transport = session.getTransport();
|
|
|
transport.connect();
|
|
|
transport.sendMessage(message, message.getAllRecipients());
|
|
|
transport.close();
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@Value("${spring.mail.username}")
|
|
|
public void setUsername(String username) {
|
|
|
SendEmailUtils.username = username;
|
|
|
}
|
|
|
|
|
|
@Value("${spring.mail.protocol}")
|
|
|
public void setSmtp(String smtp) {
|
|
|
SendEmailUtils.smtp = smtp;
|
|
|
}
|
|
|
|
|
|
|
|
|
@Value("${spring.mail.host}")
|
|
|
public void setHost(String host) {
|
|
|
SendEmailUtils.host = host;
|
|
|
}
|
|
|
|
|
|
@Value("${spring.mail.port}")
|
|
|
public void setPort(String port) {
|
|
|
SendEmailUtils.port = port;
|
|
|
}
|
|
|
|
|
|
@Value("${spring.mail.properties.mail.smtp.auth}")
|
|
|
public void setAuth(String auth) {
|
|
|
SendEmailUtils.auth = auth;
|
|
|
}
|
|
|
|
|
|
|
|
|
@Value("${spring.mail.timeout}")
|
|
|
public void setTimeout(String timeout) {
|
|
|
SendEmailUtils.timeout = timeout;
|
|
|
}
|
|
|
|
|
|
|
|
|
@Value("${spring.mail.password}")
|
|
|
public void setPassword(String password) {
|
|
|
SendEmailUtils.password = password;
|
|
|
}
|
|
|
|
|
|
}
|