0
Help us understand the problem. What are the problem?

posted at

updated at

SpringBoot開発用に、ダミーのメールサーバーを立てる

SpringBootでWebサービスを開発しています。
メール送信を実装したいのですが、メールサーバーはどうするのか迷いました。

Gmailとかでもいいですが、
Webサービスなのでいずれは独自のメールサーバーを立てたい。
しかし、そのやり方もまだよくわからない状態。
とりあえず、メール送信の機能を実装して単体テストだけでもしたい。

fakeSMTPを使ってダミーのメールサーバーを立てる

ということで調べていたらダミーのメールサーバーを立てるといいと。
ということで今回はfakeSTMPを使いました。
Javaで実装されているため、環境を選ばないのがポイントです。
下記からダウンロードします(macです)。

zipファイルがダウンロードされます。
解凍するとjarファイルが出てきます。 

fakeSMTP-x.xx.jar

これを任意の場所に配置し(今回は/path/to/fakeSMTP-x.xx.jar)、
jarファイルをダブルクリックするか、

java -jar /path/to/fakeSMTP-x.xx.jar 

で起動します。

「開発元が未確認で起動できない」と言われたら下記を参照。

起動すると、下記のような画面が表示されます。
スクリーンショット 2022-04-24 19.15.57.png

リスニングポートが「25」です。任意の番号に変更可です。
メッセージ保存先にフォルダを指定すると、送信したメッセージがそのフォルダに保管されます。

SpringBoot アプリケーションの実装

application.propertiesに下記を追記してください。

application.properties
#ホスト名(今回はローカルで起動します)
spring.mail.host=localhost
#ポート番号(リスニングポートを指定する)
spring.mail.port=25 

pom.xmlに依存関係を追加します。

pom.xml
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
MailService.java
@Service
public class MailService {
    @Autowired
	private JavaMailSender mailSender;

	public void sendMail() {
		SimpleMailMessage mailMessage = new SimpleMailMessage();
		mailMessage.setTo("宛先メールアドレス");
		mailMessage.setSubject("件名を入力します");
		mailMessage.setText("本文を入力します");

		mailSender.send(mailMessage);
	}
}

宛先メールアドレスは適当でもいい(aaaとかでもいい)ですが必ず何か入れてください。
実際にはどこにも送られません。

送信してみる

fakeSMTPの「サーバー起動」を押して、メールサーバーを起動します。
スクリーンショット 2022-04-24 19.15.57.png
Webサービスの開発サーバーを起動して、該当ロジックを流します。

メール送信に成功すると、
fakeSMTPの画面に
送信したメールの情報が表示されます。

スクリーンショット 2022-04-24 19.13.55.png

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?