whycxzp
2022-10-17 04d13e3a41ef798e07c25c1d3ad2002270a9cb76
邮件发送
6个文件已修改
1个文件已添加
169 ■■■■■ 已修改文件
pom.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/constant/UserOperation.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/MailController.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/MailService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/util/MailUtil.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/config/application-dev.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/config/application-prod.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -200,6 +200,10 @@
            <scope>system</scope>
            <systemPath>${pom.basedir}/src/main/resources/lib/aspose-words-22.3-jdk16.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
    </dependencies>
    <build>
src/main/java/com/whyc/constant/UserOperation.java
@@ -26,7 +26,10 @@
    TYPE_PARAM_CHANGE(32,"参数变更"),
    TYPE_PASSWORD_CHANGE(33,"密码修改"),
    TYPE_LOGIN_TIMEOUT(34,"登录超时"),
    TYPE_LOGIN_NO_PASS(35,"登录系统-用户ID登录");
    TYPE_LOGIN_NO_PASS(35,"登录系统-用户ID登录"),
    /**自定义的日志类型*/
    TYPE_SEND_MAIL(41,"邮件发送");
    private Integer type;
src/main/java/com/whyc/controller/MailController.java
@@ -11,6 +11,8 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
@RestController
@RequestMapping("mail")
@Api(tags = "邮件")
@@ -21,7 +23,7 @@
    @ApiOperation("发送邮件")
    @PostMapping("sendMail")
    public Response sendMail(@RequestBody MailDTO mailDTO){
    public Response sendMail(@RequestBody MailDTO mailDTO) throws MessagingException {
        service.sendMail(mailDTO);
        return new Response().set(1,null,"发送完成");
    }
src/main/java/com/whyc/service/MailService.java
@@ -1,13 +1,42 @@
package com.whyc.service;
import com.whyc.constant.UserOperation;
import com.whyc.dto.MailDTO;
import com.whyc.util.ActionUtil;
import com.whyc.util.MailUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.mail.MessagingException;
import java.util.List;
@Service
public class MailService {
    @Autowired
    private MailUtil mailUtil;
    public void sendMail(MailDTO mailDTO) {
    @Autowired
    private DocLogService logService;
    @Transactional
    public void sendMail(MailDTO mailDTO) throws MessagingException {
        Long uId = ActionUtil.getUser().getId();
        String name=ActionUtil.getUser().getName();
        mailUtil.sendMailBatch(name,mailDTO.getMailList(),mailDTO.getTitle(),mailDTO.getContent());
        //日志
        StringBuilder mailUserStr = new StringBuilder();
        List<String> mailList = mailDTO.getMailList();
        for (int i = 0; i < mailList.size(); i++) {
            if(i==0){
                mailUserStr.append(mailList.get(i));
            }else{
                mailUserStr.append(","+mailList.get(i));
            }
        }
        String msgDetail = "发送给邮箱"+mailUserStr+",标题为:"+mailDTO.getTitle()+",内容为:"+mailDTO.getContent();
        logService.record(uId,name, UserOperation.TYPE_SEND_MAIL.getType(),"邮件发送",msgDetail);
    }
}
src/main/java/com/whyc/util/MailUtil.java
New file
@@ -0,0 +1,113 @@
package com.whyc.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.List;
@Component
public class MailUtil {
    @Value("${spring.mail.username}")
    String from;
    @Autowired
    JavaMailSender mailSender;
    //简单邮件
    public void sendSimpleMail(String to, String subject, String content){
        SimpleMailMessage message = new SimpleMailMessage();
        message.setFrom(from); //发件人
        message.setTo(to);//收件人
        message.setSubject(subject); //标题
        message.setText(content);   //文件内容
        try {
            mailSender.send(message);
            System.out.println("简单邮件发送成功!");
        } catch (Exception e){
            System.out.println("发送简单邮件时发生异常!"+e);
        }
    }
    //简单邮件
    public void sendMailBatch(String name, List<String> toList, String subject, String content) throws MessagingException {
        MimeMessage message = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(message,false);
        helper.setFrom(from); //发件人
        String[] toArr = toList.toArray(new String[toList.size()]);
        helper.setTo(toArr);//收件人
        helper.setSubject(subject); //标题
        helper.setText("邮件来自图纸管理平台账户:"+name+",内容为:"+content);   //文件内容
        mailSender.send(message);
    }
    //html格式邮件
    public void sendHtmlMail(String to, String subject, String content){
        MimeMessage message = mailSender.createMimeMessage();
        try {
            //true表示需要创建一个multipart message
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);
            mailSender.send(message);
            System.out.println("html邮件发送成功!");
        } catch (MessagingException e) {
            System.out.println("发送html邮件时发生异常!"+e);
        }
    }
    //带附件的邮件
    public void sendAttachmentsMail(String to, String subject, String content, String filePath){
        MimeMessage message = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);
            FileSystemResource file = new FileSystemResource(new File(filePath));
            String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
            helper.addAttachment(fileName, file);
            mailSender.send(message);
            System.out.println("带附件的邮件已经发送。");
        } catch (MessagingException e) {
            System.out.println("发送带附件的邮件时发生异常!" + e);
        }
    }
    //带静态资源的邮件
    public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){
        MimeMessage message = mailSender.createMimeMessage();
        try {
            MimeMessageHelper helper = new MimeMessageHelper(message, true);
            helper.setFrom(from);
            helper.setTo(to);
            helper.setSubject(subject);
            helper.setText(content, true);
            FileSystemResource res = new FileSystemResource(new File(rscPath));
            helper.addInline(rscId, res);
            mailSender.send(message);
            System.out.println("嵌入静态资源的邮件已经发送。");
        } catch (MessagingException e) {
            System.out.println("发送嵌入静态资源的邮件时发生异常!" + e);
        }
    }
}
src/main/resources/config/application-dev.yml
@@ -28,6 +28,12 @@
    multipart:
      max-file-size: 200MB
      max-request-size: 200MB
  mail:
    host: smtp.163.com
    port:
    username: whyc_doc@163.com
    password: JAMKMEQUOAGGMSVV
    default-encoding: UTF-8
mybatis-plus:
  typeAliasesPackage: com.whyc.pojo,com.whyc.dto
  mapper-locations: classpath:mapper/**/*Mapper.xml
src/main/resources/config/application-prod.yml
@@ -28,6 +28,12 @@
    multipart:
      max-file-size: 200MB
      max-request-size: 200MB
  mail:
    host: smtp.163.com
    port:
    username: whyc_doc@163.com
    password: JAMKMEQUOAGGMSVV
    default-encoding: UTF-8
mybatis-plus:
  typeAliasesPackage: com.whyc.pojo,com.whyc.dto
  mapper-locations: classpath:mapper/**/*Mapper.xml