| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- package jnpf.base.util;
- import com.baomidou.mybatisplus.core.toolkit.Constants;
- import jnpf.base.model.MailAccount;
- import jnpf.base.model.MailFile;
- import jnpf.base.model.MailModel;
- import lombok.Cleanup;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.mail.javamail.JavaMailSenderImpl;
- import org.springframework.mail.javamail.MimeMessageHelper;
- import jakarta.mail.Session;
- import jakarta.mail.Transport;
- import jakarta.mail.internet.MimeMessage;
- import java.io.File;
- import java.util.Properties;
- /**
- *
- * @author JNPF开发平台组
- * @version V3.1.0
- * @copyright 引迈信息技术有限公司
- * @date 2021/3/12 15:31
- */
- @Slf4j
- public class SmtpUtil {
- private String host = null;
- private Integer port = null;
- private String username = null;
- private String password = null;
- private String emailform = null;
- private String timeout = "2500";
- private String personal = null;
- private JavaMailSenderImpl mailSender = null;
- /**
- * 邮箱验证
- *
- * @param mailAccount
- * @return
- */
- public static String checkConnected(MailAccount mailAccount) {
- try {
- Properties props = getProperties(mailAccount.getSsl());
- Session session = getSession(props);
- @Cleanup Transport transport = getTransport(session, mailAccount);
- return "true";
- } catch (Exception e) {
- log.error(e.getMessage());
- return e.getMessage();
- }
- }
- /**
- * 获取Session
- *
- * @param props
- */
- private static Session getSession(Properties props) {
- Session session = Session.getInstance(props);
- session.setDebug(true);
- return session;
- }
- /**
- * 获取Properties
- *
- * @param ssl
- */
- private static Properties getProperties(boolean ssl) {
- Properties props = new Properties();
- props.setProperty("mail.transport.protocol", "smtp");
- props.setProperty("mail.smtp.auth", "true");
- props.setProperty("mail.smtp.timeout", "2500");
- // 设置接收超时时间
- props.put("mail.smtp.connectiontimeout", "5000");
- // 设置写入超时时间
- props.put("mail.smtp.writetimeout", "25000");
- if (ssl) {
- props.put("mail.smtp.ssl.enable", "true");
- props.put("mail.smtp.socketFactory.fallback", "false");
- props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
- }
- return props;
- }
- /**
- * 获取Transport
- */
- private static Transport getTransport(Session session, MailAccount mailAccount) throws Exception {
- Transport transport = session.getTransport();
- transport.connect(mailAccount.getSmtpHost(), mailAccount.getSmtpPort(), mailAccount.getAccount(), mailAccount.getPassword());
- return transport;
- }
- /**
- * springboot发送邮件
- * @param mailAccount
- */
- public SmtpUtil(MailAccount mailAccount) {
- host = mailAccount.getSmtpHost();
- port = mailAccount.getSmtpPort();
- username = mailAccount.getAccount();
- password = mailAccount.getPassword();
- emailform = mailAccount.getAccount();
- personal = mailAccount.getAccountName();
- mailSender = createMailSender();
- }
- /**
- * 邮件发送器
- *
- * @return 配置好的工具
- */
- private JavaMailSenderImpl createMailSender() {
- JavaMailSenderImpl sender = new JavaMailSenderImpl();
- sender.setHost(host);
- sender.setPort(port);
- sender.setUsername(username);
- sender.setPassword(password);
- sender.setDefaultEncoding(Constants.UTF_8);
- Properties props = new Properties();
- props.setProperty("mail.smtp.auth", "true");
- props.setProperty("mail.smtp.timeout", timeout);
- // 设置接收超时时间
- props.put("mail.smtp.connectiontimeout", "5000");
- // 设置写入超时时间
- props.put("mail.smtp.writetimeout", "25000");
- props.setProperty("mail.smtp.starttls.enable", "true");
- props.setProperty("mail.smtp.starttls.required", "true");
- props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
- sender.setJavaMailProperties(props);
- return sender;
- }
- /**
- * 发送邮件
- *
- * @param mailModel 邮件实体
- * @throws Exception 异常
- */
- public void sendMail(String type, String path, MailModel mailModel) throws Exception {
- MimeMessage mimeMessage = mailSender.createMimeMessage();
- MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, Constants.UTF_8);
- messageHelper.setFrom(emailform,mailModel.getFromName());
- messageHelper.setTo(mailModel.getRecipient());
- if (mailModel.getBcc() != null) {
- messageHelper.setBcc(mailModel.getBcc());
- }
- if (mailModel.getCc() != null) {
- messageHelper.setCc(mailModel.getCc());
- }
- messageHelper.setSubject(mailModel.getSubject());
- messageHelper.setText(mailModel.getBodyText(), true);
- if (mailModel.getAttachment().size() > 0) {
- for (MailFile mailFile : mailModel.getAttachment()) {
- // UploadUtil.downToLocal(type, mailFile.getFileId(), FileTypeEnum.MAIL, path);
- File file = new File(path + mailFile.getFileId());
- String fileName = mailFile.getFileId();
- messageHelper.addAttachment(fileName, file);
- }
- }
- mailSender.send(mimeMessage);
- }
- }
|