1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package cn.kdan.utils;
- import cn.hutool.json.JSONObject;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.util.StringUtils;
- import javax.mail.*;
- import javax.mail.search.AndTerm;
- import javax.mail.search.FromStringTerm;
- import javax.mail.search.SearchTerm;
- import javax.mail.search.SubjectTerm;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Properties;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- /**
- * @author ComPDF-Bob 2024-06-11
- **/
- @Slf4j
- public class EmailUtil {
- /**
- * 获取邮件正文
- * @param part 邮件信息
- * @return 正文
- * @throws MessagingException
- * @throws IOException
- */
- public static String getTextFromMessage(Part part) throws MessagingException, IOException {
- if (part.isMimeType("text/plain")) {
- return (String) part.getContent();
- } else if (part.isMimeType("text/html")) {
- // 如果你想要获取 HTML 内容,可以在这里处理
- return (String) part.getContent();
- } else if (part.isMimeType("multipart/*")) {
- Multipart multipart = (Multipart) part.getContent();
- StringBuilder result = new StringBuilder();
- for (int i = 0; i < multipart.getCount(); i++) {
- BodyPart bodyPart = multipart.getBodyPart(i);
- String partText = getTextFromMessage(bodyPart);
- if (partText != null && !partText.isEmpty()) {
- result.append(partText);
- }
- }
- return result.toString();
- } else if (part.isMimeType("message/rfc822")) {
- // 如果 MIME 类型是 "message/rfc822",这意味着嵌套的邮件
- return getTextFromMessage((Part) part.getContent());
- }
- return "";
- }
- /**
- * 从邮件正文中提取目标邮箱地址
- *
- * @param body 邮件正文
- * @return 目标邮箱地址
- */
- public static String extractTargetEmail(String body) {
- Pattern pattern = Pattern.compile("([\\w.-]+@[\\w.-]+\\.[\\w]+)");
- Matcher matcher = pattern.matcher(body);
- if (matcher.find()) {
- return matcher.group(1);
- }
- return "";
- }
- }
|