Browse Source

添加邮件

杨杰 6 years ago
parent
commit
4f61cea72e

+ 4 - 0
pom.xml

@@ -37,6 +37,10 @@
 			<artifactId>spring-boot-starter-data-redis</artifactId>
 		</dependency>
 		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-mail</artifactId>
+		</dependency>
+		<dependency>
 			<groupId>de.codecentric</groupId>
 			<artifactId>spring-boot-admin-starter-client</artifactId>
 			<version>2.0.1</version>

+ 28 - 0
src/main/java/com/llisoft/sms/controller/feign/FeignMailController.java

@@ -0,0 +1,28 @@
+package com.llisoft.sms.controller.feign;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.llisoft.sms.service.MailService;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@Api(tags="【内部接口】邮件")
+@RestController
+@RequestMapping("/feign/mail")
+public class FeignMailController {
+	
+	@Autowired
+	private MailService mailService;
+	
+	
+	@ApiOperation(value="发送邮件")
+	@PostMapping("/send")
+	public void send(String subject, String text) {
+		mailService.sendMail(subject, text);
+	}
+	
+}

+ 2 - 1
src/main/java/com/llisoft/sms/controller/feign/FeignSmsController.java

@@ -11,7 +11,7 @@ import com.llisoft.sms.service.SmsService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 
-@Api(tags="【内部接口】")
+@Api(tags="【内部接口】短信")
 @RestController
 @RequestMapping("/feign/msg")
 public class FeignSmsController {
@@ -19,6 +19,7 @@ public class FeignSmsController {
 	@Autowired
 	private SmsService smsService;
 	
+	
 	@ApiOperation(value="核对验证码")
 	@PostMapping("/checkCode")
 	public boolean checkCode(String phone, String code) throws MtaException{

+ 63 - 0
src/main/java/com/llisoft/sms/service/MailService.java

@@ -0,0 +1,63 @@
+package com.llisoft.sms.service;
+
+import java.util.Arrays;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+/**
+ * 邮件发送工具类
+ * @author YangJie [2019年10月10日]
+ */
+@Service
+public class MailService {
+	
+	private Logger logger = LoggerFactory.getLogger(MailService.class);
+	
+	@Value("${mta.debug}")
+	private boolean debug;
+	@Value("${mta.emails}")
+	private String[] emails;
+	
+	@Autowired
+	private JavaMailSenderImpl javaMailSender;
+
+	
+	/**
+	 * 发送邮件
+	 * @param subject 主题 	
+	 * @param text 邮件内容
+	 * 注意主线程结束后线程池中任务不会继续执行
+	 */
+	@Async // 此注解表示方法异步执行, 在同一个类中调用无效, 因为spring会生成动态代理类完成异步调用
+	public void sendMail(String subject, String text){
+		sendMail(subject, text, emails);
+	}
+	
+	/**
+	 * 发送邮件
+	 * @param subject 主题 	
+	 * @param text 邮件内容
+	 * @param tos 收件人列表
+	 */
+	@Async // 此注解表示方法异步执行, 在同一个类中调用无效, 因为spring会生成动态代理类完成异步调用
+	public void sendMail(String subject, String text, String... emails){
+		if (debug) { // 开发模式不发邮件
+			return;
+		}
+		SimpleMailMessage mailMessage = new SimpleMailMessage(); 
+		mailMessage.setFrom(javaMailSender.getUsername());
+		mailMessage.setTo(emails);
+		mailMessage.setSubject(subject);
+		mailMessage.setText(text==null ? "" : text);
+		javaMailSender.send(mailMessage);
+		logger.info("已向邮箱{}发送了主题为[{}]的邮件", Arrays.asList(emails), subject);
+	}
+	
+}

+ 15 - 1
src/main/resources/application.yml

@@ -1,5 +1,7 @@
 ##自定义配置
-mta.debug: true #是否测试
+mta: 
+  debug: true #是否测试(测试模式不发邮件)
+  emails: sunlin@mtavip.com, yangjie@mtavip.com #管理员邮箱
 
 ##服务配置
 server.port: 8002 #监听端口
@@ -8,6 +10,18 @@ server.port: 8002 #监听端口
 sms: 
   accessKeyId: LTAIuurtY1J93Uj4
   accessKeySecret: IUkNMatSHLaiTIu674ALR7Q0wUtmkT
+  
+##邮件配置
+spring.mail: 
+  host: smtp.exmail.qq.com
+  username: saas-timer@mtavip.com
+  password: Timer@2019
+  properties: 
+    mail.smtp: 
+      auth: true
+      socketFactory: ##阿里云默认禁用25端口
+        class: javax.net.ssl.SSLSocketFactory
+        port: 465
  
 ##REDIS配置
 spring.redis: