代碼如下:
import com.es.util.utilpojo.Order;
import lombok.extern.slf4j.Slf4j;
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.util.Properties;
@Slf4j
public class EmailUtil {
public String execute(Order order) {
try {
String to[]=order.getAddressee().split(";");
String host = "smtp.exmail.qq.com";//郵件主機地址
Properties props = new Properties();
props.put("mail.transport.protocol", "smtp");// 連接協議
props.put("mail.smtp.host", host);// 主機名
props.put("mail.smtp.port", 465);// 端口號
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.ssl.enable", "true");// 設置是否使用ssl安全連接 ---一般都使用
props.put("mail.debug", "true");// 設置是否顯示debug信息 true 會在控制檯顯示相關信息
// 得到回話對象
Session mailSession = Session.getInstance(props);
// 獲取郵件對象
MimeMessage mailMessage = new MimeMessage(mailSession);
// 設置發件人郵箱地址
mailMessage.setFrom(new InternetAddress("[email protected]"));
//設置收信人
Address[] toAddr = new InternetAddress[to.length];
for (int i = 0; i < to.length; i++) {
toAddr[i] = new InternetAddress(to[i]);
}
mailMessage.setRecipients(Message.RecipientType.TO, toAddr);
//設置抄送人
if(order.getCcemail()!=null&&order.getCcemail().length()>0){
String cc[]=order.getCcemail().split(";");
Address[] ccAddr = new InternetAddress[cc.length];
for (int i = 0; i < cc.length; i++) {
ccAddr[i] = new InternetAddress(cc[i]);
}
mailMessage.setRecipients(Message.RecipientType.CC, ccAddr);
}
mailMessage.setSubject(order.getSubject());
mailMessage.setSentDate(new java.util.Date());
//MiniMultipart類是一個容器類,包含MimeBodyPart類型的對象
Multipart mainPart = new MimeMultipart();
//創建一個包含HTML內容的MimeBodyPart
BodyPart html = new MimeBodyPart();
//設置HTML內容
html.setContent(order.getBody(), "text/html; charset=utf-8");
mainPart.addBodyPart(html);
// 將MiniMultipart對象設置爲郵件內容
mailMessage.setContent(mainPart);
mailMessage.saveChanges();
//發送郵件
Transport transport = mailSession.getTransport("smtp");
log.info("======開始連接郵箱服務器");
transport.connect(host, "[email protected]", "Timer123");
log.info("======連接郵箱服務器成功");
transport.sendMessage(mailMessage, mailMessage.getAllRecipients());
transport.close();
log.info("======關閉連接郵箱服務器");
}catch(Exception e) {
log.error("Send to ["+order.getAddressee()+" "+order.getCcemail()+"] error: "+e);
}
return null;
}
public static void main(String[] args) {
EmailUtil handler = new EmailUtil();
Order order = new Order();
order.setSender("[email protected]");//發送人郵箱
order.setAddressee("[email protected]");//收信人郵箱,多個收信人之間;號間隔
order.setCcemail("[email protected]");//抄送人郵箱,多個抄送人之間;號間隔
order.setSubject("測試標題");//標題
order.setBody("測試正文");//正文
handler.execute(order);
}
}
Order類
import lombok.Data;
@Data
public class Order {
private String sender;//發信人
private String addressee;//收信人郵箱,多個收信人之間;號間隔
private String ccemail;//抄送人郵箱,多個抄送人之間;號間隔
private String subject;//標題
private String body;//正文
}
輸出結果