2017-09-03 103 views
0

我是相当新的Java和春季启动。我已经开始尝试并绘制出各种功能和参数。Java的春季启动 - 忘记密码 - 与速度的电子邮件服务?

  1. 忘记密码 - 电子邮件发送。

    //__ send email notification 
        SimpleEmailService.generateEmail("forgotPasswordTemplate", data); 
    

这是旧的电子邮件服务像 - 什么是与Java春天启动的equivlant? - 什么库导入?

package controller; 

import org.apache.velocity.Template; 
import org.apache.velocity.VelocityContext; 
import org.apache.velocity.app.VelocityEngine; 
import org.springframework.mail.javamail.JavaMailSender; 
import org.springframework.mail.javamail.MimeMessageHelper; 
import org.springframework.mail.javamail.MimeMessagePreparator; 

import com.mongodb.BasicDBObject; 

import javax.mail.internet.MimeMessage; 

import java.io.StringWriter; 

public class SimpleEmailService { 
    private static JavaMailSender mailSender; 
    private static VelocityEngine velocityEngine; 

    public void setMailSender(JavaMailSender mailSender) { 
     this.mailSender = mailSender; 
    } 

    public void setVelocityEngine(VelocityEngine velocityEngine) { 
     this.velocityEngine = velocityEngine; 
    } 

    public static void generateEmail(final String templateType, final BasicDBObject user) { 
     MimeMessagePreparator preparator = new MimeMessagePreparator() { 
     public void prepare(MimeMessage mimeMessage) throws Exception { 
      String velocityTemplateName = null; 
      String subject = null; 

      if(templateType.equals("forgotPasswordTemplate")){ 
       velocityTemplateName = "forgot_password"; 
       subject = "Forgot Password"; 
       user.put("imgPath", "http://livesite.com/images/emails/forgot_password/"); 
      } 


      if(templateType.equals("registerTemplate")){ 
       velocityTemplateName = "registration_confirmation"; 
       subject = "Registration"; 
       user.put("imgPath", "http://livesite.com/images/emails/registration_confirmation/"); 
      } 


      MimeMessageHelper message = new MimeMessageHelper(mimeMessage); 
       message.setTo("[email protected]"); 
       message.setFrom("[email protected]"); // could be parameterized... 


       message.setSubject(subject); 

      VelocityContext model = new VelocityContext(); 
       model.put("user", user);    

      String text = applyTemplate(model, velocityTemplateName+".vm"); 
       message.setText(text, true); 
     } 
     }; 
     mailSender.send(preparator); 
    } 

    public static String applyTemplate(VelocityContext data, String templateName){     
     StringWriter sw= new StringWriter();   
     Template t = velocityEngine.getTemplate("net/velocity/templates/"+templateName); 
     t.merge(data, sw); 
     return sw.toString();       
    } 
} 

这是我当前的代码库的样子 - 我基本上是想一个电源建设reactjs与API - 所以在架构方面 - 的/ API将是一个GET服务 - - 另一个是来自表格的帖子。

-

package controller; 


import java.util.List; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpSession; 

import org.apache.tomcat.util.log.SystemLogHandler; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.http.HttpStatus; 
import org.springframework.http.ResponseEntity; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.CrossOrigin; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.RestController; 

import domain.Account; 
import repo.AccountRepository; 


@RestController 
public class MyService { 

    @Autowired 
    private AccountRepository accountRepository; 


    @RequestMapping(value = "/api", method = RequestMethod.GET) 
    @CrossOrigin(origins = {"*"}) 
    public ResponseEntity<?> index(@RequestParam(value="name", required=false, defaultValue="admin1") String name) throws Exception { 
      Account acc = accountRepository.findByUsername(name); 
      return new ResponseEntity<>(acc, HttpStatus.OK); 
    } 




    @RequestMapping(value = "/login", method = RequestMethod.GET) 
    @CrossOrigin(origins = {"*"}) 
    public ResponseEntity<?> login(
      @RequestParam(value="email", required=false, defaultValue="email") String email, 
      @RequestParam(value="password", required=false, defaultValue="password") String password, 
      HttpServletRequest request 
      ) throws Exception { 
      List<Account> acc = accountRepository.findByEmail(email); 

      HttpSession session = request.getSession(true); 
      session.setAttribute("user", acc); 

      System.out.println("logged>>>"+acc); 
      System.out.println("session>>>"+session); 

      return new ResponseEntity<>(acc, HttpStatus.OK); 
    } 

    @SuppressWarnings("unchecked") 
    @RequestMapping(value = "/logout", method = RequestMethod.GET) 
    @CrossOrigin(origins = {"*"}) 
    public ResponseEntity<?> logout(
      HttpServletRequest request 
      ) throws Exception { 

      HttpSession session = request.getSession(true); 
      List<Account> acc = (List<Account>) session.getAttribute("user"); 

      session.removeAttribute("user");    

      System.out.println("logout>>>"+acc); 
      System.out.println("session>>>"+session); 

      return new ResponseEntity<>(acc, HttpStatus.OK); 
    } 

    @RequestMapping(value = "/forgot", method = RequestMethod.GET) 
    @CrossOrigin(origins = {"*"}) 
    public ResponseEntity<?> forgot(
      @RequestParam(value="email", required=false, defaultValue="email") String email 
      ) throws Exception { 
      List<Account> acc = accountRepository.findByEmail(email); 
      return new ResponseEntity<>(acc, HttpStatus.OK); 
    } 

    @RequestMapping(value = "/edit", method = RequestMethod.GET) 
    @CrossOrigin(origins = {"*"}) 
    public ResponseEntity<?> edit(
      @RequestParam(value="username", required=false, defaultValue="username") String username, 
      @RequestParam(value="password", required=false, defaultValue="password") String password, 
      @RequestParam(value="email", required=false, defaultValue="email") String email 
      ) throws Exception { 
      Account acc = accountRepository.findByUsername(username); 
      return new ResponseEntity<>(acc, HttpStatus.OK); 
    } 

    @RequestMapping(value = "/register", method = RequestMethod.GET) 
    @CrossOrigin(origins = {"*"}) 
    public ResponseEntity<?> register(
      @RequestParam(value="username", required=false, defaultValue="username") String username, 
      @RequestParam(value="password", required=false, defaultValue="password") String password, 
      @RequestParam(value="email", required=false, defaultValue="email") String email 
      ) throws Exception { 
     Account checkAccount = accountRepository.findByUsername(username); 
     System.out.println("checkAccount>>>"+checkAccount); 
     if (checkAccount == null) { 
      try {    
       // if not create some 
       Account newAcc = accountRepository.saveAndFlush(new Account(
          username, 
          password, 
          email 
         )); 
       System.out.println("newAcc>>>"+checkAccount); 
       return new ResponseEntity<>(newAcc, HttpStatus.OK); 
      } 
      catch (Exception e) { 
       e.printStackTrace(); 
       System.out.println("error adding user>>>"+checkAccount); 
       return new ResponseEntity<>(e, HttpStatus.OK); 
      } 
     }else{ 
      // String e = "user exists"; 
      System.out.println("user already exists>>>"+checkAccount); 
      return new ResponseEntity<>(checkAccount, HttpStatus.OK); 
     } 
    } 

} 
+0

我觉得这个教程可以帮助https://www.quickprogrammingtips.com/spring-boot/how-to-send-email-from-spring-boot-applications.html你也可以阅读参考https://开头docs.spring.io/spring/docs/4.3.10.RELEASE/spring-framework-reference/htmlsingle/#mail https://docs.spring.io/spring-boot/docs/current/reference/html/boot-功能 - email.html –

+0

好了,所以它是类似的 - 一个例子使用“的freemarker模板”和其他的“速度” - 任何偏好吗?我有一个使用Velocity模板 –

+0

看到这个职位,也既查看模板引擎的文档,它会帮助你选择能满足你需求的一个https://github.com/spring-projects/spring-boot/commit旧代码/ 86d87f6b8ad6816b1d98bad7ab68bcdad1bf5cf0 –

回答