package cn.ictgu.tools.mail;
import cn.ictgu.dao.model.User;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
/**
* 邮件服务
* Created by Silence on 2017/3/11.
*/
@Service
@Log4j
public class MailService {
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from;
private static final String TITLE_SIGN_UP = "[邮件标题]";
private static final String CONTENT = "[邮件内容]";
public void userValidate(User user, String token){
MimeMessage mailMessage = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(mailMessage, true, "GBK");
helper.setFrom(from);
helper.setTo(user.getEmail());
helper.setSubject(TITLE_SIGN_UP);
String link = "http://www.ictgu.cn/validate/" + token;
String message = String.format(CONTENT, user.getNickname(), link, link, user.getEmail());
helper.setText(message, true);
mailSender.send(mailMessage);
} catch (MessagingException e) {
log.error("发送邮件失败:User:" + JSONObject.toJSONString(user) + ", Token: " + token);
}
}
public String getTokenOfSignUp(User user){
String token = UUID.randomUUID().toString();
String value = JSONObject.toJSONString(user);
stringRedisTemplate.opsForValue().set(signUpPrefix + token, value);
stringRedisTemplate.expire(signUpPrefix + token, 12, TimeUnit.HOURS);
return token;
}
public boolean signUp(User user){
String email = user.getEmail();
if (existEmail(email)){
log.error("用户注册,邮箱已注册:" + email);
return false;
}
sendValidateEmail(user);
return true;
}
@Async
private void sendValidateEmail(User user){
String token = tokenManager.getTokenOfSignUp(user);
log.error("用户注册,准备发送邮件:User:" + JSONObject.toJSONString(user) + ", Token: " + token);
mailService.userValidate(user, token);
}
private boolean existEmail(String email){
return mapper.selectByEmail(email) != null;
}
@RestController
public class UserApi {
@Autowired
private UserService userService;
@RequestMapping(value = "/sign-up", method = RequestMethod.POST)
public SimpleResponse signUp(HttpServletRequest request){
User user = createUser(request);
SimpleResponse response = checkSignUpRequest(user);
if (response.getCode() == 100){
if (!userService.signUp(user)){
response.setCode(200);
response.setMessage("此邮箱已注册,请勿重复注册!");
return response;
}else {
response.setMessage("注册激活邮件已发送至您邮箱,请在12小时内激活完成注册!");
return response;
}
}
return response;
}
private SimpleResponse checkSignUpRequest(User user){
SimpleResponse response = new SimpleResponse();
String email = user.getEmail();
if (!CheckUtils.checkEmail(email)){
response.setCode(200);
response.setMessage("邮箱格式不合法");
return response;
}
String password = user.getPassword();
if (!CheckUtils.checkPassword(password)){
response.setCode(200);
response.setMessage("密码长度必须为8-16位,且必须包含数字和字母");
return response;
}
String nickname = user.getNickname();
if (!CheckUtils.checkNickname(nickname)){
response.setCode(200);
response.setMessage("昵称长度不合法");
return response;
}
response.setCode(100);
return response;
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有