[Java] 纯文本查看 复制代码/**
* 发送会议邀请邮件
*
* @param toMailAddress 收件人(邀约人),支持多个
* @param mailSubject 邮件主题
* @param mailContent 邮件内容(建议传入velocity去构建生成的HTML内容)
* @param summary 摘要,即日历(日程)上显示的标题
* @param startTimestamp 会议开始时间
* @param endTimestamp 会议结束时间
* @param locationContent 会议位置
* @return 发送结果
*/
public Boolean sendMeetingMailTemplate(String[] toMailAddressArray, String mailSubject, String mailContent,
String summary, Long startTimestamp, Long endTimestamp,
String locationContent) {
if (toMailAddressArray == null || toMailAddressArray.length <= 0 || StringUtils.isEmpty(fromMailAddress_preview)
|| StringUtils.isEmpty(mailSubject) || StringUtils.isEmpty(mailContent) || StringUtils.isEmpty(summary)) {
return false;
}
boolean sendStatus = false;
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
Properties prop = new Properties();
prop.put("mail.smtp.host", mailHost);
prop.put("mail.smtp.auth", mailSmtpAuth);
prop.put("mail.smtp.port", mailPort);
prop.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
prop.setProperty("mail.smtp.socketFactory.fallback", "false");
prop.setProperty("mail.smtp.socketFactory.port", mailSmtpSocketFactoryPort);
MailAuthenticator authenticator = new MailAuthenticator(mailUsername, mailPassword);
Session session = Session.getDefaultInstance(prop, authenticator);
MimeMessage message = new MimeMessage(session);
try {
message.addHeaderLine("method=REQUEST");
message.addHeaderLine("charset=UTF-8");
message.addHeaderLine("component=VEVENT");
message.setFrom(new InternetAddress(fromMailAddress_preview));
InternetAddress[] addressArray = new InternetAddress[toMailAddressArray.length];
for (int i = 0; i < toMailAddressArray.length; i++) {
addressArray[i] = new InternetAddress(toMailAddressArray[i]);
}
message.addRecipients(Message.RecipientType.TO, addressArray);
message.setSubject(mailSubject);
} catch (MessagingException e) {
e.printStackTrace();
}
// 会议内容核心拼装
BodyPart meetingBodyPart = new MimeBodyPart();
try {
meetingBodyPart.setHeader("Content-Class", "urn:content- classes:calendarmessage");
meetingBodyPart.setHeader("Content-ID", "calendar_message");
meetingBodyPart.setDataHandler(new DataHandler(new ByteArrayDataSource(
buildCalendar(summary, startTimestamp, endTimestamp, locationContent, toMailAddressArray).toString(),
"text/calendar")));
} catch (IOException | MessagingException e) {
e.printStackTrace();
}
// 邮件原文组合+发送
Multipart multipart = new MimeMultipart();
try {
multipart.addBodyPart(meetingBodyPart);
BodyPart contentBodyPart = new MimeBodyPart();
// 普通文件赋值
//contentBodyPart.setText(mailContent);
/* HTML内容赋值
Map model = new HashMap<>();
model.put("sscontent", "test测试师善");
VelocityContext velocityContext = new VelocityContext();
model.put("sscontent", model.get("sscontent"));
String text = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "/mail/test.vm", "UTF-8",
model);*/
contentBodyPart.setContent(mailContent, "text/html; charset=utf-8");
multipart.addBodyPart(contentBodyPart);
message.setContent(multipart);
Transport.send(message);
sendStatus = true;
} catch (MessagingException e) {
e.printStackTrace();
}
return sendStatus;
}