今回は、SpringBootでメール送信を実装するメモとなります。
org.springframework.mail
でメール送信オブジェクトを作成して、
シンプルなメールを送信するだけの内容となります。
雛形(テンプレート)を利用したメール送信は、また別のメモでまとめたいと思います。
尚、テストメールを確認するためのSMTPサーバーは、MailHogを利用します。
MailHogが動作可能な前提でのメモとなります。
目次
環境
- macOS:Big Sur 11.5.2
- IntelliJ(Ultimate Edition):2023.1
- MailHog:1.0.1
動作バージョン
- Java:Amazon Corretto 17
- SpringBoot:3.1.0
- Gradle:7.6.1
SpringBoot 依存設定
メール送信の実装に必要な依存モジュールは、spring-boot-starter-mail
のみです。
build.gradleもしくは、pom.xmlのdependenciesに追加して依存モジュールを更新すれば、
実装に必要なorg.springframework.mailがロードされます。
・build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-mail'
}
・pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
こちらのメモ用に、挙動確認で作成したプロジェクトのbuild.gradleは以下となります。
挙動確認用に簡易コントローラを実装して、確認用のエンドポイントを作成したいので、
spring-boot-starter-web
も含まれています。
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.0'
id 'io.spring.dependency-management' version '1.1.0'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springframework.boot:spring-boot-starter-web'
}
tasks.named('test') {
useJUnitPlatform()
}
メール送信実装 (挙動確認用コントローラ実装)
SimpleMailMessage
でメール内容を作成して、
mailSender.send(SimpleMailMessageオブジェクト)
でメール送信を行います。
package com.example.springbootmailsample.controller;
import org.springframework.mail.MailException;
import org.springframework.mail.MailSender;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SendMailController {
private final MailSender mailSender;
public SendMailController(MailSender mailSender) {
this.mailSender = mailSender;
}
@GetMapping("/sendTestMail")
public String sendTestMail() {
final SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom("mailhog.example.from");
simpleMailMessage.setTo("mailhog.example.to");
simpleMailMessage.setCc("mailhog.example.cc");
simpleMailMessage.setBcc("mailhog.example.bcc");
simpleMailMessage.setSubject("テストメールタイトル");
simpleMailMessage.setText("テストメール本文\r\nテスト。"); // 本文
try {
mailSender.send(simpleMailMessage);
} catch (MailException e) {
e.printStackTrace();
}
return "send Test Mail. check MailHog.";
}
}
メールサーバー設定 定義
メールサーバの設定をapplication.propertiesやapplication.yamlで指定します。
今回は、MailHogの設定がデフォルトのままの想定で指定します。
・application.propertis
spring.mail.host=localhost
spring.mail.port=1025
spring.mail.username=user
spring.mail.password=pass
・application.yaml
mail:
host: localhost
port: 1025
username: user
password: pass
https://spring.pleiades.io/spring-boot/docs/current/reference/html/application-properties.html
挙動確認
MailHogと実装したコントローラのサービスが動作している状態で、
挙動確認用のエンドポイントにアクセスします。
http://localhost:8080/sendTestMail
MailHogのウェブメールUIでメールが届いていることを確認できます。
今回のメモは以上となります。
シンプルなメールであれば、簡単に送信まで実装できます。
MailHogもローカルでもメール送信のテストをできて便利です。