引入依赖
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>
样例代码
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
public class SendEmailUtil {
public static String senderAddress = "xxx";
public static String senderAccount = "xxx";
public static String senderPassword = "xxx";
public static String preDir = "xxx";
public static String dateStr = new SimpleDateFormat("yyyyMMdd").format(new Date());
public static void send(String subject, String content, String receivers, String[] files) {
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.host", "smtp.163.com");
props.setProperty("mail.smtp.port", "465");
props.put("mail.smtp.ssl.enable", "true");
Session session = Session.getInstance(props);
session.setDebug(true);
try {
Message msg = getMimeMessage(session, subject, content, receivers, files);
Transport transport = session.getTransport();
transport.connect(senderAccount, senderPassword);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
} catch (Exception e) {
}
}
private static MimeMessage getMimeMessage(Session session, String subject, String content, String receivers, String[] files) throws Exception {
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(senderAddress));
msg.setRecipients(MimeMessage.RecipientType.TO, String.join(",", receivers));
msg.setSubject(subject, "UTF-8");
MimeBodyPart text = new MimeBodyPart();
text.setContent(content, "text/html;charset=UTF-8");
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.setSubType("mixed");
for (String file : files) {
MimeBodyPart attachment = new MimeBodyPart();
String filePath = new StringBuilder(preDir).append("/").append(dateStr).append("/")
.append(file).append("_").append(dateStr).append(".xlsx").toString();
DataHandler dh2 = new DataHandler(new FileDataSource(filePath));
attachment.setDataHandler(dh2);
attachment.setFileName(MimeUtility.encodeText(dh2.getName()));
mm.addBodyPart(attachment);
}
msg.setContent(mm);
msg.setSentDate(new Date());
return msg;
}
}