邮箱注册
Controller
@RequestMapping(path="/register",method = RequestMethod.POST)
public String register(Model model, User user){
Map<String,Object> map=userService.register(user);//注册信息验证及添加
if(map==null||map.isEmpty()){
model.addAttribute("msg","已注册,发送激活邮件到你的邮箱,请激活账户");
model.addAttribute("target","/index");
return "/site/operate-result";
}else{
model.addAttribute("usernameMsg",map.get("usernameMsg"));
model.addAttribute("passwordMsg",map.get("passwordMsg"));
model.addAttribute("emailMsg",map.get("emailMsg"));
return "/site/register";
}
}
Service
注册信息验证、添加、邮件内容
public Map<String,Object> register(User user){
Map<String,Object> map=new HashMap<>();
注册信息合法性验证
user.set...,user实体
userMapper.insertUser(user);
//激活邮件
Context context=new Context();
context.setVariable("email",user.getEmail());
String url=domain+contextPath+"/activation/"+user.getId()+"/"+user.getActivationCode();
context.setVariable("url",url);
String content=templateEngine.process("/mail/activation",context);//动态网页activation.html内容填充后获取网页的字符串
mailClient.sendMail(user.getEmail(),"激活账户",content);//发送邮件
return map;
}
mailClient
发送邮件客户端
@Component
public class MailClient {
private static final Logger logger= LoggerFactory.getLogger(MailClient.class);
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String from;
public void sendMail(String to,String subject,String content){
try {
MimeMessage message=mailSender.createMimeMessage();
MimeMessageHelper helper=new MimeMessageHelper(message);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content,true);
mailSender.send(helper.getMimeMessage());
}catch (MessagingException e){
logger.error("发送邮件失败"+e.getMessage());
}
}
}
邮件内容的html
Service中通过org.thymeleaf.context.Context对网页内容进行填充
<body>
<div>
<p>
<b th:text="${email}"></b>, 您好!
</p>
<p>
您正在注册牛客网, 这是一封激活邮件, 请点击
<a th:href="${url}">此链接</a>,
激活您的牛客账号!
</p>
</div>
</body>