javax.mail
依賴__javax.mail + mq
<!--javax.mail-->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!--activeMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-pool</artifactId>
</dependency>
application.properties
#ActiveMQ
spring.activemq.broker-url=tcp://localhost:61616
場景:
用戶注冊時(shí)窍霞,需要給用戶發(fā)送郵件犁嗅,采用ActiveMQ作為消息中間件
Controller 中的 Producer
//注入JmsTemplate
@Autowired
private JmsTemplate jmsTemplate;
@RequestMapping("/register")
public String register(HttpServletRequest request) throws MessagingException {
String userName = request.getParameter("username");
String passWord = request.getParameter("password");
String email = request.getParameter("email");
User user = new User();
user.setUserName(userName);
user.setPassWord(passWord);
user.setEmail(email);
user.setState("0");
user.setCreateTime(new Date());
userService.addUser(user);
// MailUtils.sendMail(email,"歡迎您成為我們的會(huì)員");
/**
* MQ
*/
jmsTemplate.send("mail_lp", new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
MapMessage message = session.createMapMessage();
message.setString("title","注冊郵件");
message.setString("email",email);
return message;
}
});
return "/success";
}
Consumer
消費(fèi)類上必須有 @Component 或者@Service 注解,這樣Consumer才會(huì)委派給Listener.
@Component
public class Consumer {
@JmsListener(destination = "mail_lp")
public void sendMail(Message message) throws JMSException, MessagingException {
MapMessage mm = (MapMessage) message;
String title = mm.getString("title");
String email = mm.getString("email");
MailUtils.sendMail(email,title);
}
}
MailUtils
public class MailUtils {
public static void sendMail(String email, String emailMsg)
throws AddressException, MessagingException {
// 1.創(chuàng)建一個(gè)程序與郵件服務(wù)器會(huì)話對象 Session
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "SMTP");
props.setProperty("mail.host", "smtp.126.com");
props.setProperty("mail.smtp.auth", "true");// 指定驗(yàn)證為true
// 創(chuàng)建驗(yàn)證器
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
//return new PasswordAuthentication("CalistaAngel", "lp123456");給你們用我的問題也不大畢竟我不是那么小氣的人哈哈哈哈哈
return new PasswordAuthentication("郵箱名", "授權(quán)碼");
}
};
Session session = Session.getInstance(props, auth);
// 2.創(chuàng)建一個(gè)Message鞍匾,它相當(dāng)于是郵件內(nèi)容
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("CalistaAngel@126.com")); // 設(shè)置發(fā)送者
message.setRecipient(RecipientType.TO, new InternetAddress(email)); // 設(shè)置發(fā)送方式與接收者
message.setSubject("用戶注冊");
// message.setText("這是一封激活郵件交洗,請<a href='#'>點(diǎn)擊</a>");
message.setContent(emailMsg, "text/html;charset=utf-8");
// 3.創(chuàng)建 Transport用于將郵件發(fā)送
Transport.send(message);
}
}
mq
Email