Discuss / Java / 使用JMS , (代码 补全)

使用JMS , (代码 补全)

Topic source

净净一隅

#1 Created at ... [Delete] [Delete and Lock User]

1.   AppConfig添加 objectMapper的bean

@Bean
ObjectMapper createObjectMapper(){
return new ObjectMapper();
}

2. MailMessage 自定义

@Component
public class MailMessage {
private String from;
private String replyTo;
private String to;
private String cc;
private String bcc;
private Date sentDate;
private String subject;
private String text;

public void setFrom(String s) throws MailParseException {
this.from=s;
}

public void setReplyTo(String s) throws MailParseException {
this.replyTo=s;
}

public void setTo(String s) throws MailParseException {
this.to=s;
}

public void setTo(String... strings) throws MailParseException {
}

public void setCc(String s) throws MailParseException {
this.cc=s;
}

public void setCc(String... strings) throws MailParseException {
 //待补齐
}

public void setBcc(String s) throws MailParseException {
this.bcc=s;
}

public void setBcc(String... strings) throws MailParseException {

 //待补齐
}

public void setSentDate(Date date) throws MailParseException {
this.sentDate=date;
}

public void setSubject(String s) throws MailParseException {
this.subject=s;
}

public void setText(String s) throws MailParseException {
this.text=s;
}

public String getBcc() {
return bcc;
}

public String getCc() {
return cc;
}

public String getFrom() {
return from;
}

public String getReplyTo() {
return replyTo;
}

public Date getSentDate() {
return sentDate;
}

public String getText() {
return text;
}

public String getSubject() {
return subject;
}

public String getTo() {
return to;
}

}

3.  MailService

1). 增加 mailMessage成员、属性, 用于封装待发送内容

private MailMessage mailMessage;

public void setMailMessage(User user){
mailMessage=new MailMessage();
mailMessage.setFrom(user.getEmail());
mailMessage.setTo(user.getEmail());
mailMessage.setSubject("Welcome to Java course!");
String text = String.format("<p>Hi, %s,</p><p>Welcome to Java course!</p><p>Sent at %s</p>", user.getName(), LocalDateTime.now());
mailMessage.setText(text);
}

public MailMessage getMailMessage() {
return mailMessage;
}

  1. 根据MailMessageListener的onMailMessageReceived方法,

   需在MailService里增加sendRegistrationMail(MailMessage  mailMessage)方法

public void sendRegistrationMail(MailMessage mm){
logger.info("开始发送注册邮件");
try {
MimeMessage mimeMessage = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, "utf-8");
helper.setFrom(mm.getFrom());
helper.setTo(mm.getTo());
helper.setSubject(mm.getSubject());
helper.setText(mm.getText(), true);
mailSender.send(mimeMessage);
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}

4. UserController,注册方法

1. 注册成功后,设置邮件内容、发送消息给MQ

@PostMapping("/register")
public void register(HttpServletRequest req, HttpServletResponse resp,Register registerInfo) throws IOException {
System.out.println(registerInfo);
Map<String, Object> model;
try {
User user = userService.registerA(registerInfo);
logger.info("user registered: {}", user.getEmail());
// send registration mail:
executorService.submit(() -> {
mailService.setMailMessage(user);
try {
messagingService.sendMailMessage(mailService.getMailMessage());
} catch (Exception e) {
e.printStackTrace();
}
});

......

}


  • 1

Reply