1111
This commit is contained in:
88
src/main/java/com/mini/capi/utils/MailUtil.java
Normal file
88
src/main/java/com/mini/capi/utils/MailUtil.java
Normal file
@@ -0,0 +1,88 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user