89 lines
2.8 KiB
Java
89 lines
2.8 KiB
Java
package com.mini.capi.utils;
|
|
|
|
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
import javax.mail.BodyPart;
|
|
import javax.mail.Message;
|
|
import javax.mail.MessagingException;
|
|
import javax.mail.Multipart;
|
|
import javax.mail.internet.MimeMessage;
|
|
import java.io.IOException;
|
|
|
|
public class MailUtil {
|
|
private static final Logger logger = LoggerFactory.getLogger(MailUtil.class);
|
|
|
|
/**
|
|
* 获取邮件内容
|
|
*/
|
|
public static String getEmailContent(Message message) {
|
|
try {
|
|
Object content = message.getContent();
|
|
|
|
// 简单文本内容
|
|
if (content instanceof String) {
|
|
return (String) content;
|
|
}
|
|
// 复杂内容(多部分)
|
|
else if (content instanceof Multipart) {
|
|
Multipart multipart = (Multipart) content;
|
|
StringBuilder contentBuilder = new StringBuilder();
|
|
|
|
// 遍历所有部分
|
|
for (int i = 0; i < multipart.getCount(); i++) {
|
|
BodyPart bodyPart = multipart.getBodyPart(i);
|
|
|
|
// 忽略附件
|
|
if (BodyPart.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition()) ||
|
|
bodyPart.getFileName() != null) {
|
|
continue;
|
|
}
|
|
|
|
// 获取内容
|
|
Object partContent = bodyPart.getContent();
|
|
if (partContent instanceof String) {
|
|
contentBuilder.append(partContent);
|
|
} else if (partContent instanceof Multipart) {
|
|
// 处理嵌套的多部分内容
|
|
contentBuilder.append(getMultipartContent((Multipart) partContent));
|
|
}
|
|
}
|
|
|
|
return contentBuilder.toString();
|
|
}
|
|
} catch (Exception e) {
|
|
logger.error("获取邮件内容失败", e);
|
|
}
|
|
|
|
return "";
|
|
}
|
|
|
|
/**
|
|
* 处理嵌套的多部分内容
|
|
*/
|
|
private static String getMultipartContent(Multipart multipart) throws MessagingException, IOException {
|
|
StringBuilder contentBuilder = new StringBuilder();
|
|
|
|
for (int i = 0; i < multipart.getCount(); i++) {
|
|
BodyPart bodyPart = multipart.getBodyPart(i);
|
|
|
|
// 忽略附件
|
|
if (BodyPart.ATTACHMENT.equalsIgnoreCase(bodyPart.getDisposition()) ||
|
|
bodyPart.getFileName() != null) {
|
|
continue;
|
|
}
|
|
|
|
Object partContent = bodyPart.getContent();
|
|
if (partContent instanceof String) {
|
|
contentBuilder.append(partContent);
|
|
} else if (partContent instanceof Multipart) {
|
|
contentBuilder.append(getMultipartContent((Multipart) partContent));
|
|
}
|
|
}
|
|
|
|
return contentBuilder.toString();
|
|
}
|
|
}
|
|
|