開発環境でメールをテストするときはsmtp4devが便利

目次

  1. 背景
  2. smtp4devとは
  3. 使い方
    1. インストール方法
    2. Githubからプロジェクトをクローン
    3. docker-compose.ymlを編集
    4. Webの管理画面を開く
    5. PHPからメールを送ってみる
    6. 結果確認
  4. まとめ
  5. 関連記事
  6. PR

背景

こんにちは。 かりんとうマニア(@karintozuki)です。

Webアプリを開発する際にメールを送る機能をテストすることがありますよね。

そんな時にこういった悩みを持ったことはないですか?

  • 開発に使えるSMTPサーバがない
  • 開発で使ったメールでInboxがいっぱいになってしまった。
  • メールを誤送信してしまった
  • 正しい宛先に送れているかテストするためにいくつかフリーメールのアカウントを作った

まだまだあると思いますが、端的にいって面倒くさいですよね笑

そんな悩みを解決してくれるのがsmtp4devです。

smtp4devとは

smtp4devはローカルなSMTPサーバーのような動きをするツールです。
といっても少しイメージが湧きづらいと思うので、もう少し説明します。

普通にメールを送る機能を開発すると、

  1. アプリからSMTPサーバにどんなメールを送るか情報を送る
  2. SMTPサーバからメールが送られる
  3. 受信者がメールを受信する

といった手順でメールが送られます。

smtp4devを使うと以下の感じになります。

  1. アプリからローカルのsmtp4devにどんなメールを送るか情報を送る
  2. smtp4devがメールをローカルに記録する

メールは実際に送られず、ローカルのsmtp4devサーバーからプレビューできる状態で保存されます。

SMTPサーバーのモックと言ったら分かりやすいかもしれません。

メールを実際に送ることはないので誤送信の心配もないですし、
実際のSMTPサーバーと比べて構築もDockerで楽チンです。

それでは実際の使い方を紹介します。

使い方

それでは使い方を見ていきましょう。

インストール方法

インストールですが、以下の二つの方法があります。

  • exeファイルとしてインストールする
  • Dockerコンテナとして実行する

この記事ではDockerを使った方法を紹介します。

Githubからプロジェクトをクローン

GitHubにクローンしてそのまま使えるレポジトリを作りました。
https://github.com/karintomania/docker-for-smtp4dev

以下のコマンドを使用してGithubからプロジェクトをクローンします。

1
2
`git clone https://github.com/karintomania/docker-for-smtp4dev.git`

docker-compose.ymlを編集

先ほどクローンしたプロジェクトフォルダに入って
コンテナをビルド&立ち上げをします。

1
2
docker-composer up -d

Webの管理画面を開く

http://localhost:8080 をブラウザで開いてみましょう。

以下のような管理画面が見えると思います。

PHPからメールを送ってみる

それではこのSMTPサーバを使ってメールを送ってみましょう。
PHP Mailerを使って以下のようなコードでメールを送ってみます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

<?php

use PHPMailer\PHPMailer\PHPMailer;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

$mail->isSMTP();
$mail->Host = 'host.docker.internal'; // 普通はlocalhostで良い
$mail->Port = 25;

$mail->setFrom('noreply@bedroomcomputing.com'); // 適当なFromアドレス
$mail->addAddress('test@bedroomcomputing.com'); // 適当なToアドレス

$mail->isHTML(true);
$mail->CharSet = 'UTF-8';
$mail->Subject = 'テストメール';
$mail->Body = 'これは<b>テストメール</b>です。';

$mail->send();

もちろんPHP MailerでなくてもSMTP経由でメールを送る実装であれば、
なんでも大丈夫です。

少し注意ですが、FromとToアドレスは実際にメールを送るわけではないので、
適当なアドレスで大丈夫です。

また、Hostにhost.docker.internalを指定していますが、
これはこのPHPファイルをDocker内から動かしているため、
Docker内からlocalhostを参照するようにこう書いています。

普通にローカルマシンで動いているプログラムならlocalhostを指定して大丈夫です。

結果確認

また、http://localhost:8080 にアクセスしてみてください。
以下のようにメールが送れたことが確認できますね。

実際に宛先のアドレスにはメールが届かないことにも注意してください。
こうすることで、実在するメールアドレスを使用しても
誤送信を心配しなくてすみますね。

まとめ

今回はSMTPを使ったメール送信をテストできるsmtp4devを紹介しました。

メール関連の開発は面倒なことも多いですが、こういったツールを使用することで、
快適に開発出来ますね。

是非使ってみてください!

それじゃ今日はこの辺で。

関連記事

こちらの記事もおすすめです。

AIで凛として時雨をRe:Automationする!(歌詞をAIに自動生成させてみた)

PR

あなたの会社はあなたの技術を評価してくれていますか?
技術力を高めようと頑張っているのに、
技術が評価されないような会社にいたらそれは良い環境なのでしょうか?
エンジニアとして技術を高めたいのなら環境を選ぶことも大事です。

レバテックキャリア
エンジニアとして働いていて実務経験があるなら、
求人数の充実具合からレバテックキャリアがおすすめです。
IT転職ではデファクト・スタンダードですね。
▼レバテック キャリア 登録はこちら▼


Tech Clips
Tech Clipsは年収500万以上&自社サービスを持った会社に特化した求人サイトです。
首都圏限定になってはしまいますが、
収入を増やしたい、自社サービスを持った企業への転職をしたい人におすすめです。

▼Tech Clips 登録はこちら▼