From 04d13e3a41ef798e07c25c1d3ad2002270a9cb76 Mon Sep 17 00:00:00 2001 From: whycxzp <perryhsu@163.com> Date: 星期一, 17 十月 2022 13:53:56 +0800 Subject: [PATCH] 邮件发送 --- src/main/resources/config/application-dev.yml | 6 ++ src/main/java/com/whyc/controller/MailController.java | 4 + src/main/java/com/whyc/service/MailService.java | 31 ++++++++++ src/main/java/com/whyc/util/MailUtil.java | 113 +++++++++++++++++++++++++++++++++++++ pom.xml | 4 + src/main/java/com/whyc/constant/UserOperation.java | 5 + src/main/resources/config/application-prod.yml | 6 ++ 7 files changed, 166 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index c764b67..38723b5 100644 --- a/pom.xml +++ b/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> diff --git a/src/main/java/com/whyc/constant/UserOperation.java b/src/main/java/com/whyc/constant/UserOperation.java index a2658e2..9f0e07a 100644 --- a/src/main/java/com/whyc/constant/UserOperation.java +++ b/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; diff --git a/src/main/java/com/whyc/controller/MailController.java b/src/main/java/com/whyc/controller/MailController.java index c7134ac..4333b7f 100644 --- a/src/main/java/com/whyc/controller/MailController.java +++ b/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,"鍙戦�佸畬鎴�"); } diff --git a/src/main/java/com/whyc/service/MailService.java b/src/main/java/com/whyc/service/MailService.java index 61054d2..5973762 100644 --- a/src/main/java/com/whyc/service/MailService.java +++ b/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); } } diff --git a/src/main/java/com/whyc/util/MailUtil.java b/src/main/java/com/whyc/util/MailUtil.java new file mode 100644 index 0000000..49d88ac --- /dev/null +++ b/src/main/java/com/whyc/util/MailUtil.java @@ -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琛ㄧず闇�瑕佸垱寤轰竴涓猰ultipart 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("鍙戦�乭tml閭欢鏃跺彂鐢熷紓甯革紒"+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); + } + } +} + diff --git a/src/main/resources/config/application-dev.yml b/src/main/resources/config/application-dev.yml index f83a90f..77fc75f 100644 --- a/src/main/resources/config/application-dev.yml +++ b/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 diff --git a/src/main/resources/config/application-prod.yml b/src/main/resources/config/application-prod.yml index a7ebdbe..4cd86e0 100644 --- a/src/main/resources/config/application-prod.yml +++ b/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 -- Gitblit v1.9.1