Spring Bootでメールを送信する
今回の送信は簡単な平分を送信するだけ
メールサーバ
Gmailをリレーする
設定
application.properties
# port server.port=7777 # mail spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username=Gmailのメールアドレス spring.mail.password=Gmailのパスワード spring.mail.properties.mail.smtp.auth=true spring.mail.properties.mail.smtp.starttls.enable=true
※Spring Bootではここに値を設定する
pom.xml
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
メール送信
MailSampleController.java
package com.example.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class MailSampleController { private final JavaMailSender javaMailSender; @Autowired MailSampleController(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; } @RequestMapping(value = "/mail/send", method = {RequestMethod.POST} ) public String send() { SimpleMailMessage mailMessage = new SimpleMailMessage(); mailMessage.setTo("送信先のメールアドレス"); mailMessage.setReplyTo("リプライのメールアドレス"); mailMessage.setFrom("Fromのメールアドレス"); mailMessage.setSubject("テストメール"); mailMessage.setText("テストメールです、\nここから次の行\nおわりです\n"); javaMailSender.send(mailMessage); return "ok"; } }
このapiを叩けばメールを送信する。
結果
所感
メール送信自体は今までなんどもあったけどローカルの開発環境で送信する手段があまり準備されていないことが多くて準備にドタバタしている感じになってしまう。テストとかする場合はもあるけどとりあえずはこれで…