|
@@ -0,0 +1,247 @@
|
|
|
+package com.fdkankan.email;
|
|
|
+
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.core.io.FileSystemResource;
|
|
|
+import org.springframework.mail.SimpleMailMessage;
|
|
|
+import org.springframework.mail.javamail.JavaMailSenderImpl;
|
|
|
+import org.springframework.mail.javamail.MimeMessageHelper;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import org.thymeleaf.TemplateEngine;
|
|
|
+import org.thymeleaf.context.Context;
|
|
|
+
|
|
|
+import javax.mail.internet.MimeMessage;
|
|
|
+import java.io.File;
|
|
|
+import java.nio.charset.StandardCharsets;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Component
|
|
|
+public class MailService {
|
|
|
+ @Autowired
|
|
|
+ private JavaMailSenderImpl javaMailSenderImpl;
|
|
|
+ @Autowired
|
|
|
+ private TemplateEngine templateEngine;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 简单邮件
|
|
|
+ * * @param to 接收人
|
|
|
+ * * @param subject 主题
|
|
|
+ * * @param content 内容
|
|
|
+ * * @return
|
|
|
+ */
|
|
|
+ public String sendSimpleEmail(String to, String subject, String content) {
|
|
|
+ try {
|
|
|
+ SimpleMailMessage message = new SimpleMailMessage();
|
|
|
+ message.setFrom(javaMailSenderImpl.getUsername());
|
|
|
+ message.setTo(to);
|
|
|
+ // 接收地址 message.setSubject(subject);
|
|
|
+ // 标题 message.setText(content);
|
|
|
+ // 内容 javaMailSenderImpl.send(message);
|
|
|
+ return "发送成功";
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * html 邮件
|
|
|
+ * * @param to 接收人
|
|
|
+ * * @param subject 主题
|
|
|
+ * * @param html 内容
|
|
|
+ */
|
|
|
+ public String sendHtmlMail(String to, String subject, String html) {
|
|
|
+ try {
|
|
|
+ MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
|
|
|
+ // 设置utf-8编码,否则邮件会有乱码
|
|
|
+ MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
|
|
|
+ messageHelper.setFrom(javaMailSenderImpl.getUsername());
|
|
|
+ messageHelper.setTo(to);
|
|
|
+ messageHelper.setSubject(subject);
|
|
|
+ messageHelper.setText(html, true);
|
|
|
+ javaMailSenderImpl.send(mimeMessage);
|
|
|
+ return "发送成功";
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 带附件 邮件
|
|
|
+ * * @param to 接收人
|
|
|
+ * * @param subject 主题
|
|
|
+ * * @param content 内容
|
|
|
+ * * @param isHtml 是否是html 邮件 false:普通邮件,true:html邮件
|
|
|
+ * * @param fileName 文件名称
|
|
|
+ * * @param filePath 文件路径
|
|
|
+ * * @return
|
|
|
+ */
|
|
|
+ public String sendFileMail(String to, String subject, String content, boolean isHtml, String fileName, String filePath) {
|
|
|
+ try {
|
|
|
+ MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
|
|
|
+ // 设置utf-8编码,否则邮件会有乱码
|
|
|
+ MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
|
|
|
+ messageHelper.setFrom(javaMailSenderImpl.getUsername());
|
|
|
+ messageHelper.setTo(to);
|
|
|
+ messageHelper.setSubject(subject);
|
|
|
+ messageHelper.setText(content, isHtml);
|
|
|
+ // 设置附件
|
|
|
+ FileSystemResource file = new FileSystemResource(new File(filePath));
|
|
|
+ if (StringUtils.isBlank(fileName)) { // 文件名为空时,取文件本身名称 fileName = file.getFilename();
|
|
|
+ }
|
|
|
+ messageHelper.addAttachment(fileName, file);
|
|
|
+ javaMailSenderImpl.send(mimeMessage);
|
|
|
+ return "发送成功";
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 多附件 邮件
|
|
|
+ * * @param to 接收人
|
|
|
+ * * @param subject 主题
|
|
|
+ * * @param content 内容
|
|
|
+ * * @param isHtml 是否是html 邮件 false:普通邮件,true:html邮件
|
|
|
+ * * @param list 附件集合 filepath:附件路径,fileName:附件名
|
|
|
+ * * @return
|
|
|
+ */
|
|
|
+ public String sendFilesMail(String to, String subject, String content, boolean isHtml, List<Map<String, String>> list) {
|
|
|
+ try {
|
|
|
+ MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
|
|
|
+ // 设置utf-8编码,否则邮件会有乱码
|
|
|
+ MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
|
|
|
+ messageHelper.setFrom(javaMailSenderImpl.getUsername());
|
|
|
+ messageHelper.setTo(to);
|
|
|
+ messageHelper.setSubject(subject);
|
|
|
+ messageHelper.setText(content, isHtml);
|
|
|
+ // 设置附件
|
|
|
+ for (Map<String, String> map : list) {
|
|
|
+ FileSystemResource file = new FileSystemResource(new File(map.get("filepath")));
|
|
|
+ String fileName = map.get("fileName");
|
|
|
+ if (StringUtils.isBlank(fileName)) {
|
|
|
+ // 文件名为空时,取文件本身名称
|
|
|
+ // fileName = file.getFilename();
|
|
|
+ }
|
|
|
+ messageHelper.addAttachment(fileName, file);
|
|
|
+ }
|
|
|
+ javaMailSenderImpl.send(mimeMessage);
|
|
|
+ return "发送成功";
|
|
|
+ } catch (
|
|
|
+ Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 模板 邮件
|
|
|
+ * * @param to 接收人
|
|
|
+ * * @param subject 主题
|
|
|
+ * * @param tplStr 模板路径 默认路径为 resources/templates 这里传该路径下 之后的路径 mail/模板名称 例 email/templateMail 这里不用加后缀
|
|
|
+ * * @param map 绑定到模板的参数
|
|
|
+ * * @return
|
|
|
+ */
|
|
|
+ public String sendTemplateMail(String to, String subject, String tplStr, Map<String, Object> map) {
|
|
|
+ try {
|
|
|
+ MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
|
|
|
+ // 设置utf-8编码,否则邮件会有乱码
|
|
|
+ MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, StandardCharsets.UTF_8.toString());
|
|
|
+ messageHelper.setFrom(javaMailSenderImpl.getUsername());
|
|
|
+ messageHelper.setTo(to);
|
|
|
+ messageHelper.setSubject(subject);
|
|
|
+ // 设置模板参数
|
|
|
+ Context context = new Context();
|
|
|
+ context.setVariables(map);
|
|
|
+ // 将参数 绑定到模板中
|
|
|
+ String tempContent = templateEngine.process(tplStr, context);
|
|
|
+ messageHelper.setText(tempContent, Boolean.TRUE);
|
|
|
+ javaMailSenderImpl.send(mimeMessage);
|
|
|
+ return "发送成功";
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 带附件 模板 邮件
|
|
|
+ * * @param to 接收人
|
|
|
+ * * @param subject 主题
|
|
|
+ * * @param tplStr 模板路径 默认路径为 resources/templates 这里传该路径下 之后的路径 mail/模板名称 例 email/templateMail 这里不用加后缀
|
|
|
+ * * @param map 绑定到模板的参数
|
|
|
+ * * @param fileName 附件名
|
|
|
+ * * @param filePath 附件路径
|
|
|
+ * * @return
|
|
|
+ */
|
|
|
+ public String sendTemplateFileMail(String to, String subject, String tplStr, Map<String, Object> map, String fileName, String filePath) {
|
|
|
+ try {
|
|
|
+ MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
|
|
|
+ // 设置utf-8或GBK编码,否则邮件会有乱码
|
|
|
+ MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
|
|
|
+ messageHelper.setFrom(javaMailSenderImpl.getUsername());
|
|
|
+ messageHelper.setTo(to);
|
|
|
+ messageHelper.setSubject(subject);
|
|
|
+ // 设置模板参数
|
|
|
+ Context context = new Context();
|
|
|
+ context.setVariables(map);
|
|
|
+ // 将参数 绑定到模板中
|
|
|
+ String tempContent = templateEngine.process(tplStr, context);
|
|
|
+ messageHelper.setText(tempContent, true);
|
|
|
+ // 设置附件
|
|
|
+ FileSystemResource file = new FileSystemResource(new File(filePath));
|
|
|
+ if (StringUtils.isBlank(fileName)) { // 文件名为空时,取文件本身名称
|
|
|
+ fileName = file.getFilename();
|
|
|
+ }
|
|
|
+ messageHelper.addAttachment(fileName, file);
|
|
|
+ javaMailSenderImpl.send(mimeMessage);
|
|
|
+ return "发送成功";
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 多附件 模板 邮件
|
|
|
+ * * @param to 接收人
|
|
|
+ * * @param subject 主题
|
|
|
+ * * @param tplStr 模板路径 默认路径为 resources/templates 这里传该路径下 之后的路径 mail/模板名称 例 email/templateMail 这里不用加后缀
|
|
|
+ * * @param map 绑定到模板的参数
|
|
|
+ * * @param list 附件集合 filepath:附件路径,fileName:附件名
|
|
|
+ * * @return
|
|
|
+ */
|
|
|
+ public String sendTemplateFilesMail(String to, String subject, String tplStr, Map<String, Object> map, List<Map<String, String>> list) {
|
|
|
+ try {
|
|
|
+ MimeMessage mimeMessage = javaMailSenderImpl.createMimeMessage();
|
|
|
+ // 设置utf-8编码,否则邮件会有乱码
|
|
|
+ MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
|
|
|
+ messageHelper.setFrom(javaMailSenderImpl.getUsername());
|
|
|
+ messageHelper.setTo(to);
|
|
|
+ messageHelper.setSubject(subject);
|
|
|
+ // 设置模板参数
|
|
|
+ Context context = new Context();
|
|
|
+ context.setVariables(map);
|
|
|
+ // 将参数 绑定到模板中
|
|
|
+ String tempContent = templateEngine.process(tplStr, context);
|
|
|
+ messageHelper.setText(tempContent, true);
|
|
|
+ // 设置附件
|
|
|
+ for (Map<String, String> fileMap : list) {
|
|
|
+ FileSystemResource file = new FileSystemResource(new File(fileMap.get("filepath")));
|
|
|
+ String fileName = fileMap.get("fileName");
|
|
|
+ if (StringUtils.isBlank(fileName)) { // 文件名为空时,取文件本身名称
|
|
|
+ fileName = file.getFilename();
|
|
|
+ }
|
|
|
+ messageHelper.addAttachment(fileName, file);
|
|
|
+ }
|
|
|
+ javaMailSenderImpl.send(mimeMessage);
|
|
|
+ return "发送成功";
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ return e.getMessage();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|