MailUtil.java 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package com.echepei.utils.mail;
  2. import com.echepei.dto.mail.MailDto;
  3. import com.echepei.enums.MailTypeEnum;
  4. import jakarta.mail.Authenticator;
  5. import jakarta.mail.PasswordAuthentication;
  6. import jakarta.mail.Session;
  7. import java.util.HashMap;
  8. import java.util.Map;
  9. import java.util.Properties;
  10. /**
  11. * @author Rain
  12. */
  13. public class MailUtil {
  14. private static final Map<String, Session> SESSION_MAP = new HashMap<>(20);
  15. public static Session getSession(MailDto mailDto) {
  16. // 如果存在则直接返回
  17. if (SESSION_MAP.containsKey(mailDto.getMailFrom())) {
  18. return SESSION_MAP.get(mailDto.getMailFrom());
  19. }
  20. MailTypeEnum mailTypeEnum = MailTypeEnum.getMailTypeEnum(mailDto.getMailType());
  21. if (mailTypeEnum == null) {
  22. throw new RuntimeException("邮箱类型错误");
  23. }
  24. Properties properties = new Properties();
  25. properties.put("mail.smtp.host", mailTypeEnum.mailSmtpHost);
  26. properties.put("mail.smtp.port", mailTypeEnum.mailSmtpPort);
  27. properties.put("mail.smtp.auth", "true");
  28. properties.put("mail.smtp.starttls.enable", "true");
  29. Session session = Session.getInstance(properties, new Authenticator() {
  30. @Override
  31. protected PasswordAuthentication getPasswordAuthentication() {
  32. return new PasswordAuthentication(mailDto.getMailUserName(), mailDto.getMailPassword());
  33. }
  34. });
  35. SESSION_MAP.put(mailDto.getMailFrom(), session);
  36. return session;
  37. }
  38. }