代码为:
import com.test.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.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 会在控制台显示相关信息
// String from = "qq号@qq.com";// 发信邮箱
// Authenticator auth = new MailAuthenticator(from, "");
// 得到回话对象
Session mailSession = Session.getInstance(props);
// 获取邮件对象
MimeMessage mailMessage = new MimeMessage(mailSession);
// 设置发件人邮箱地址
mailMessage.setFrom(new InternetAddress("qq号@qq.com"));
// mailMessage.setFrom(new InternetAddress(order.getSender()));
// // 设置自定义发件人昵称
// String nick = "";
// try {
// nick = javax.mail.internet.MimeUtility.encodeText("req");
// } catch (UnsupportedEncodingException e) {
// e.printStackTrace();
// }
// mailMessage.setFrom(new InternetAddress(nick + " <req@cmread.com>"));
//设置收信人
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, "qq号@qq.com", "password");
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("qq号@qq.com");
order.setAddressee("对方qq号@ebupt.com");//收信人邮箱,多个收信人之间;号间隔
// order.setCcemail("对方qq号2@139.com");//抄送人邮箱,多个抄送人之间;号间隔
order.setSubject("测试标题");//标题
order.setBody("测试正文");//正文
handler.execute(order);
}
}
Order类:
package com.test.utilpojo;
import lombok.Data;
@Data
public class Order {
private String sender;//发信人
private String addressee;//收信人邮箱,多个收信人之间;号间隔
private String ccemail;//抄送人邮箱,多个抄送人之间;号间隔
private String subject;//标题
private String body;//正文
// private int orderid;
// private String ordertype;
// private int state;
// private String statedesc;
// private String optrid;
// private String createtime;
//图片list
// private List<String> listimg = new ArrayList<String>();
}