はじめに
開発でメール送信のテストをするのに会社のメールサーバを使うのも良くないですし、間違ってお客さんのメールに送ってしまうという事故を防ぐためにダミーSMTPサーバがないかと思い調べたらsmtp4devというダミーSMTPサーバーがあったので使い方を説明する。
.NET Coreで作られているので、Windows、Linux、Mac OS-X(および.NET Coreを利用)で動作します。
概要
今回はWindows10にインストールしてから動作テストまでを説明します。
古いバージョンでは、Windows GUIベース(ここ)のがありますが、今回は、exe実行して、ダミーSMTPサービスを立ち上げて、ブラウザでメールの受信状況を確認できます。
https://github.com/rnwood/smtp4dev
インストール(WindowsPCで直接実行)
1.GitHubからプログラムをダウンロード
-
リンクはGithubのreleasesからダウンロード(ここ)
-
ダウンロードしたファイルを解凍
2.Rnwood.Smtp4dev.exeを実行
1.Smtp4dev.exeを実行
ダウンロードしたファイルを解凍して、中にあるRnwood.Smtp4dev.exe を実行する。
3.動作テスト
- Powrshellの権限変更
PowerShellを実行したことがないPCであれば実行ポリシーによりメールの実行テストをすることができないので、下記のサイトで変更をする
PowerShell のスクリプトが実行できない場合の対処方法
1.PowerShell ISEを起動
2.下記のメール送信用のスクリプトをPowerShell ISEに貼り付け、実行ボタンを押す
param($count=1)
1..$count | %{
write-host $_
Send-MailMessage -To foo@bar.com `
-From from@from.com `
-Subject "Subject:メールタイトル $_" `
-Body "Body:メール本文" -Encoding "utf8" `
-Port "25" `
-SmtpServer localhost
}
認証でエラーが出る場合は下記
# 認証情報の設定
$username = "from@example.com" # 使用するSMTPサーバーのユーザー名 これでOK
$password = "yourpasWord" # 使用するSMTPサーバーのパスワード これでOK
# パスワードをSecureStringに変換
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
# 認証情報を作成
$credential = New-Object System.Management.Automation.PSCredential($username, $securePassword)
# 送信メールの設定
$ToADDR = "to@example.com"
$FromADDR = "from@example.com"
$SMTPHost = "localhost"
$PortNum = "25" # 2525 など必要なポート番号に調整可能
$Subject = "smtp4devのテスト"
$MailBody = "これはテストメールです1"
# メール送信
Send-MailMessage -To $ToADDR `
-From $FromADDR `
-SmtpServer $SMTPHost `
-Port $PortNum `
-Subject "$Subject" `
-Body $MailBody `
-Encoding UTF8 `
-Credential $credential
#-UseSsl # 必要に応じてSSL接続
3.Browserに下記のURLを貼り付けてメールが届いている確認できる
http://localhost:5000/
インストール(Dockerバージョン)
- exeを起動するのに.net Coreのモジュールが必要でしたが、こちらはDockerをインストールしてコマンド実行するだけで環境を構築することができます。
1.Docker-composeファイルのダウンロード
製作者のサイトにdocker-compose.ymlのファイルが
あるのでダウンロードしてください。
下記は、不要なコメントを削除したものになります。今回は下記のdocker-compose.ymlを実行しました。
version: '3'
services:
smtp4dev:
image: rnwood/smtp4dev:v3
restart: always
ports:
# Change the number before : to the port the web interface should be accessible on
- '5000:80'
# Change the number before : to the port the SMTP server should be accessible on
- '25:25'
# Change the number before : to the port the IMAP server should be accessible on
- '143:143'
volumes:
# This is where smtp4dev stores the database..
- smtp4dev-data:/smtp4dev
environment:
#Specifies the server hostname. Used in auto-generated TLS certificate if enabled.
- ServerOptions__HostName=smtp4dev
volumes:
smtp4dev-data:
2.Dockerコマンドの実行
- Dockerをインストールしていれば、コマンドプロンプトからでも構いません。
今回はVS Codeのターミナルから実行します。
docker-compose up
3.動作テスト
1.Powershell ISEから下記のコマンドを実行
param($count=1)
1..$count | %{
write-host $_
Send-MailMessage -To foo@bar.com -From from@from.com -Subject "Subject:メールタイトル $_" -Body "Body:メール本文" -Encoding "utf8" -SmtpServer localhost
}
2.Browserに下記のURLを貼り付けてメールが届いている確認できる
http://localhost:5000/
smtp4devのSettingsについて
General
- Require Authentication (SMTP, IMAP)・・・OFFにすると認証が不要になる。
その他のダミーSMTPサーバ