Skip to content

Commit d389f96

Browse files
committed
模版邮件
1 parent a9569da commit d389f96

File tree

5 files changed

+148
-58
lines changed

5 files changed

+148
-58
lines changed

src/main/java/com/danbai/ys/service/impl/RegisterValidateServiceImpl.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
import org.springframework.stereotype.Component;
1010
import org.springframework.stereotype.Service;
1111

12+
import java.text.SimpleDateFormat;
13+
import java.util.Date;
14+
import java.util.HashMap;
15+
import java.util.Map;
1216
import java.util.Random;
1317
import java.util.concurrent.TimeUnit;
1418

@@ -38,10 +42,22 @@ public void senValidate(String email) {
3842
for (int i = 0; i < MAXINT; i++) {
3943
yzm += String.valueOf(r.nextInt(10));
4044
}
41-
String content = "欢迎使用淡白影视,您的验证码是:" + yzm + ",有效时间4分钟";
42-
emailUtil.sendEmail("淡白影视验证码邮件", content, email);
45+
//发送激活链接邮件
46+
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
47+
String subject = "淡白影视验证码";
48+
String emailTemplate = "ValidationEmailTemplate";
49+
Map<String, Object> dataMap = new HashMap<>();
50+
dataMap.put("email", email);
51+
dataMap.put("code", yzm);
52+
dataMap.put("createTime", sdf.format(new Date()));
53+
try {
54+
emailUtil.sendTemplateMail(email, subject, emailTemplate, dataMap);
55+
} catch (Exception e) {
56+
return;
57+
}
4358
redisTemplate.opsForValue().set(email, yzm, 4, TimeUnit.MINUTES);
4459
logger.info("向邮箱"+email+"发送验证邮件");
60+
4561
}
4662
@Override
4763
public String getVerificationCode(String email) {
Lines changed: 34 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,48 @@
11
package com.danbai.ys.utils;
22

3-
import org.springframework.mail.SimpleMailMessage;
4-
import org.springframework.mail.javamail.JavaMailSenderImpl;
5-
import org.springframework.scheduling.annotation.Async;
3+
import org.springframework.beans.factory.annotation.Autowired;
4+
import org.springframework.beans.factory.annotation.Value;
5+
import org.springframework.mail.javamail.JavaMailSender;
6+
import org.springframework.mail.javamail.MimeMessageHelper;
67
import org.springframework.stereotype.Component;
7-
import org.springframework.stereotype.Service;
8-
9-
import javax.mail.internet.InternetAddress;
10-
import java.io.UnsupportedEncodingException;
11-
import java.util.Properties;
8+
import org.thymeleaf.TemplateEngine;
9+
import org.thymeleaf.context.Context;
10+
import javax.mail.internet.MimeMessage;
11+
import java.util.Map;
1212

1313
/**
1414
* @author danbai
1515
* @date 2019-10-29 16:26
1616
*/
1717
@Component
18-
@Service
1918
public class EmailUtil {
20-
private static final String HOST = "smtpdm.aliyun.com";
21-
private static final String PROTOCOL = "smtp";
22-
private static final int PORT = 465;
23-
private static final String FROM = "[email protected]";
24-
private static final String PWD = "123";
25-
26-
private static JavaMailSenderImpl javaMailSender;
27-
28-
static {
29-
javaMailSender = new JavaMailSenderImpl();
30-
javaMailSender.setProtocol(PROTOCOL);
31-
javaMailSender.setHost(HOST);
32-
//链接服务器
33-
javaMailSender.setPort(PORT);
34-
//默认使用25端口发送
35-
javaMailSender.setUsername(FROM);
36-
//账号
37-
javaMailSender.setPassword(PWD);
38-
//密码
39-
javaMailSender.setDefaultEncoding("UTF-8");
40-
Properties properties = new Properties();
41-
properties.setProperty("mail.smtp.auth", "true");
42-
//开启认证
43-
properties.setProperty("mail.smtp.socketFactory.port", "465");
44-
//设置ssl端口
45-
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
46-
javaMailSender.setJavaMailProperties(properties);
47-
}
19+
@Value("${dbys.mail-sender}")
20+
private String sender;
21+
@Autowired
22+
private JavaMailSender javaMailSender;
23+
@Autowired
24+
private TemplateEngine templateEngine;
4825

49-
@Async
50-
public void sendEmail(final String title, final String content, final String toMail) {
51-
try {
52-
SimpleMailMessage mailMessage = new SimpleMailMessage();
53-
String nick=javax.mail.internet.MimeUtility.encodeText("淡白影视");
54-
mailMessage.setFrom(String.valueOf(new InternetAddress(nick+" <"+FROM+">")));
55-
mailMessage.setSubject(title);
56-
mailMessage.setText(content);
57-
String[] toAddress = toMail.split(",");
58-
mailMessage.setTo(toAddress);
59-
//发送邮件
60-
javaMailSender.send(mailMessage);
61-
}catch(Exception e){
62-
System.out.println(e);
26+
/**
27+
* 发信模版
28+
* @param receiver
29+
* @param subject
30+
* @param emailTemplate
31+
* @param dataMap
32+
* @throws Exception
33+
*/
34+
public void sendTemplateMail(String receiver, String subject, String emailTemplate, Map<String, Object> dataMap) throws Exception {
35+
Context context = new Context();
36+
for (Map.Entry<String, Object> entry : dataMap.entrySet()) {
37+
context.setVariable(entry.getKey(), entry.getValue());
6338
}
39+
String templateContent = templateEngine.process(emailTemplate, context);
40+
MimeMessage message = javaMailSender.createMimeMessage();
41+
MimeMessageHelper helper = new MimeMessageHelper(message, true);
42+
helper.setFrom(sender);
43+
helper.setTo(receiver);
44+
helper.setSubject(subject);
45+
helper.setText(templateContent, true);
46+
javaMailSender.send(message);
6447
}
6548
}

src/main/java/com/danbai/ys/websocket/CinemaSocket.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,10 +149,7 @@ public void onMessage(String message, Session session) {
149149
log.info(message);
150150
}
151151
}
152-
} catch (NullPointerException e) {
153-
e.printStackTrace();
154-
} catch (JSONException e) {
155-
log.info(message);
152+
} catch (Exception e) {
156153
e.printStackTrace();
157154
}
158155
}

src/main/resources/application.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ spring:
77
mvc:
88
favicon:
99
enabled: false
10+
mail:
11+
host: smtpdm.aliyun.com
12+
13+
password: 123
14+
default-encoding: utf-8
1015
jackson:
1116
date-format: yyyy-MM-dd HH:mm:ss
1217
time-zone: GMT+8
@@ -19,7 +24,7 @@ spring:
1924
datasource:
2025
druid:
2126
url: jdbc:mysql://10.0.91.46:3306/ys?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2b8
22-
username: ys
27+
username: 123
2328
password: 123
2429
initial-size: 1
2530
min-idle: 1
@@ -41,3 +46,5 @@ logging:
4146
path: "./logs/"
4247
file: "./logs/dbys.log"
4348
file.max-size: 100MB
49+
dbys:
50+
mail-sender: "[email protected]"
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<!DOCTYPE html>
2+
<html lang="en" xmlns:th="http://www.thymeleaf.org">
3+
4+
<head>
5+
<meta charset="UTF-8">
6+
<title>验证邮件</title>
7+
<style type="text/css">
8+
* {
9+
margin: 0;
10+
padding: 0;
11+
box-sizing: border-box;
12+
font-family: Arial, Helvetica, sans-serif;
13+
}
14+
15+
body {
16+
background-color: #ECECEC;
17+
}
18+
19+
.container {
20+
width: 800px;
21+
margin: 50px auto;
22+
}
23+
24+
.header {
25+
height: 80px;
26+
background-color: #49bcff;
27+
border-top-left-radius: 5px;
28+
border-top-right-radius: 5px;
29+
padding-left: 30px;
30+
}
31+
32+
.header h2 {
33+
padding-top: 25px;
34+
color: white;
35+
}
36+
37+
.content {
38+
background-color: #fff;
39+
padding-left: 30px;
40+
padding-bottom: 30px;
41+
border-bottom: 1px solid #ccc;
42+
}
43+
44+
.content h2 {
45+
padding-top: 20px;
46+
padding-bottom: 20px;
47+
}
48+
49+
.content p {
50+
padding-top: 10px;
51+
}
52+
53+
.footer {
54+
background-color: #fff;
55+
border-bottom-left-radius: 5px;
56+
border-bottom-right-radius: 5px;
57+
padding: 35px;
58+
}
59+
60+
.footer p {
61+
color: #747474;
62+
padding-top: 10px;
63+
}
64+
</style>
65+
</head>
66+
67+
<body>
68+
<div class="container">
69+
<div class="header">
70+
<h2>欢迎使用淡白影视!</h2>
71+
</div>
72+
<div class="content">
73+
<h2>亲爱的用户您好</h2>
74+
<p>您的邮箱:<b><span th:text="${email}"></span></b></p>
75+
<p>您的验证码:<b><a th:text="${code}"></a></b></p>
76+
<p>您发送的日期:<b><span th:text="${createTime}"></span></b></p>
77+
<p>如果您有什么疑问可以联系管理员,Email: <b>[email protected]</b></p>
78+
</div>
79+
<div class="footer">
80+
<p>此为系统邮件,请勿回复</p>
81+
<p>请保管好您的信息,避免被他人盗用</p>
82+
<p>©DanBai</p>
83+
</div>
84+
</div>
85+
</body>
86+
87+
</html>

0 commit comments

Comments
 (0)