2020/04/14 (新增連結)
Spring Mail是基於JavaMail,可以利用JavaMail透過SMTP送出email,也可以利用pop3或imap去mail server讀取email。我們最常使用的就是利用SMTP送出email,以下就只提供SMTP這部份的範例。
pom.xml需要:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>application.properties (以gmail為例)
spring.mail.host = smtp.gmail.comspring.mail.username = xxxx@gmail.comspring.mail.password = xxxxsend.from.email= xxxx@gmail.comspring.mail.properties.mail.smtp.auth = true;spring.mail.properties.mail.smtp.starttls.enable = truespring.mail.properties.mail.smtp.ssl.enable = truespring.mail.properties.mail.socketFactory.port=587spring.mail.properties.mail.socketFactory.class=javax.net.ssl.SSLSocketFactoryspring.mail.properties.mail.socketFactory.fallback=falsespring.mail.smtp.port= 587package com.example.demo.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.ResponseBody;import com.example.demo.service.MailService;@Controllerpublic class MailController { @Autowired private MailService mailService; @GetMapping("/") @ResponseBody public String hello(){ mailService.prepareAndSend("053792@fju.edu.tw","Sample mail subject"); return "Mail sent"; } }MailService.java
package com.example.demo.service;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.mail.MailException;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.mail.javamail.MimeMessagePreparator;import org.springframework.stereotype.Service;@Servicepublic class MailService { private JavaMailSender mailSender; @Autowired public MailService(JavaMailSender mailSender) { this.mailSender = mailSender; } public void prepareAndSend(String recipient, String message) { MimeMessagePreparator messagePreparator = mimeMessage -> { MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage); messageHelper.setFrom("jitsung.wu@gmail.com"); messageHelper.setTo(recipient); messageHelper.setSubject(message); messageHelper.setText(message); }; try { mailSender.send(messagePreparator); //System.out.println("sent"); } catch (MailException e) { //System.out.println(e); // runtime exception; compiler will not force you to handle it } } }