package com.moral.api.util; import lombok.AllArgsConstructor; import org.springframework.boot.autoconfigure.mail.MailProperties; import org.springframework.core.io.InputStreamSource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.MimeMessageHelper; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import javax.activation.FileDataSource; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import java.io.File; import java.io.UnsupportedEncodingException; import java.security.GeneralSecurityException; import java.util.List; /** * @ClassName EmailSpringUtil * @Description TODO * @Author @cjl * @Date 2024-01-24 13:23 * @Version 1.0 */ @Component @AllArgsConstructor public class EmailSpringUtil { private final JavaMailSender javaMailSender; private final MailProperties mailProperties; /** * 邮件发送 * * @param subject 邮件主题 * @param content 邮件内容 * @param contentIsHtml 内容是否为html格式 * @param fromMailPersonalName 发件人昵称 * @param toMail 收件人邮箱 * @param ccMail 抄送人邮箱 * @param bccMail 秘密抄送人邮箱 * @param fileNames 文件名(本地路径) * @throws GeneralSecurityException * @throws UnsupportedEncodingException * @throws MessagingException */ public void sendEmail(String subject, String content, boolean contentIsHtml, String fromMailPersonalName, String toMail, String ccMail, String bccMail, List fileNames) throws MessagingException, UnsupportedEncodingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(mailProperties.getUsername(), fromMailPersonalName); helper.setTo(toMail); if (!ObjectUtils.isEmpty(ccMail)) { helper.setCc(ccMail); } if (!ObjectUtils.isEmpty(bccMail)) { helper.setBcc(bccMail); } helper.setSubject(subject); helper.setText(content, contentIsHtml); // 设置附件(注意这里的fileName必须是服务器本地文件名,不能是远程文件链接) if (!CollectionUtils.isEmpty(fileNames)) { for (String fileName : fileNames) { FileDataSource fileDataSource = new FileDataSource(fileName); helper.addAttachment(fileDataSource.getName(), fileDataSource); } } javaMailSender.send(message); } public void sendEmail(String subject, String content, boolean contentIsHtml, String fromMailPersonalName, String toMail, String ccMail, String bccMail, File[] files) throws MessagingException, UnsupportedEncodingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(mailProperties.getUsername(), fromMailPersonalName); helper.setTo(toMail); if (!ObjectUtils.isEmpty(ccMail)) { helper.setCc(ccMail); } if (!ObjectUtils.isEmpty(bccMail)) { helper.setBcc(bccMail); } helper.setSubject(subject); helper.setText(content, contentIsHtml); // 设置附件(注意这里的fileName必须是服务器本地文件名,不能是远程文件链接) if (!ObjectUtils.isEmpty(files)) { for (File file : files) { helper.addAttachment(file.getName(), file); } } javaMailSender.send(message); } public void sendEmail(String subject, String content, boolean contentIsHtml, String fromMailPersonalName, String toMail, String ccMail, String bccMail, String fileName, InputStreamSource fileInput) throws MessagingException, UnsupportedEncodingException { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(mailProperties.getUsername(), fromMailPersonalName); helper.setTo(toMail); if (!ObjectUtils.isEmpty(ccMail)) { helper.setCc(ccMail); } if (!ObjectUtils.isEmpty(bccMail)) { helper.setBcc(bccMail); } helper.setSubject(subject); helper.setText(content, contentIsHtml); // 设置附件(注意这里的fileName必须是服务器本地文件名,不能是远程文件链接) if (fileInput != null) { helper.addAttachment(fileName, fileInput); } javaMailSender.send(message); } }