tianboguang 3 anni fa
parent
commit
cf8c80ccdd

+ 48 - 0
4dkankan-utils-email/pom.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>4dkankan-utils</artifactId>
+        <groupId>com.fdkankan</groupId>
+        <version>2.0.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <version>1.0.0-SNAPSHOT</version>
+
+    <artifactId>4dkankan-utils-email</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-context</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework</groupId>
+            <artifactId>spring-beans</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-mail</artifactId>
+            <version>2.0.6.RELEASE</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-thymeleaf</artifactId>
+            <version>2.0.6.RELEASE</version>
+        </dependency>
+    </dependencies>
+
+</project>

+ 46 - 0
4dkankan-utils-email/src/main/java/com/fdkankan/emai/config/SpringMailConfig.java

@@ -0,0 +1,46 @@
+package com.fdkankan.emai.config;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
+
+import java.util.Properties;
+
+@Configuration
+public class SpringMailConfig {
+
+    // 发送邮件服务器
+    @Value("${spring.mail.host}")
+    private String host;
+    @Value("${spring.mail.port}")
+    private Integer port;
+    // 邮箱
+    @Value("${spring.mail.username}")
+    private String username;
+    // 客户端授权码
+    @Value("${spring.mail.password}")
+    private String password;
+
+    private String PROPERTY_MAIL_SMTP_AUTH = "true";
+    private String PROPERTY_mail_smtp_starttls_enable = "true";
+    private String PROPERTY_mail_smtp_starttls_required = "true";
+
+    @Bean
+    public JavaMailSenderImpl mailSender() {
+        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
+        // 设置参数
+        mailSender.setHost(host);
+        mailSender.setUsername(username);
+        mailSender.setPassword(password);
+        mailSender.setPort(port);
+        Properties properties = mailSender.getJavaMailProperties();
+        properties.setProperty("mail.smtp.auth", PROPERTY_MAIL_SMTP_AUTH);
+        properties.setProperty("mail.smtp.starttls.enable", PROPERTY_mail_smtp_starttls_enable);
+        properties.setProperty("mail.smtp.starttls.required", PROPERTY_mail_smtp_starttls_required);
+        properties.setProperty("mail.smtp.socketFactory.port", Integer.toString(port));
+        properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
+        mailSender.setJavaMailProperties(properties);
+        return mailSender;
+    }
+}

+ 247 - 0
4dkankan-utils-email/src/main/java/com/fdkankan/email/MailService.java

@@ -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();
+        }
+    }
+}

+ 1 - 0
pom.xml

@@ -13,6 +13,7 @@
         <module>4dkankan-utils-app-push</module>
         <module>4dkankan-utils-dingtalk</module>
         <module>4dkankan-utils-mongodb</module>
+        <module>4dkankan-utils-email</module>
     </modules>
 
     <groupId>com.fdkankan</groupId>