MailTrapのダミーのSMTPサーバ使ってテストメール送信

本サイトでもLaravelアプリケーションからテストメールの送信の動作確認をする時に毎回利用しているMailTrap。無料でユーザ登録もでき手間のかかる設定もないのでテストの動作確認には最適なサービスです。Laravel以外のアプリケーションでも利用可能なサービスですがLaravelを利用することを前提に説明を行っています。本文書ではMailTrapサービスへのユーザの登録方法からLaravelでの使用方法について説明していきます。

Mailtrapとは
Fake smtp testing server. Dummy smtp email testingとホームページで説明されているようにフェイクのSMTPテストサーバを提供するサービスです。アカウント作成後に提供される情報を使ってSMTPの設定を行います。SMTPの設定完了後、アプリケーション内で送信したメールはすべてMailtrap上のメールボックス(inbox)に保存されるのでアプリケーションのメール送信の動作確認とメールの内容確認を行うことができます。お客様に誤ってメール送信をすることも自分のメールアカウントがテストメールであふれることもありません。

Mailtrapへのアカウント作成
Mailtrapの公式のホームページにアクセスしてアカウントの作成を行います。中央の赤四角で囲まれたSign Up Nowのボタンか右上のSign upボタンをクリックしてください。

アカウントの作成方法を選択してください。ここではメールアドレスを使ってアカウントを作成しますが、GoogleかGithubのアカウントでも作成できます。

アカウント作成に利用するE-mailアドレスとパスワードを入力してSingUpボタンをクリックしてください。

アカウントの作成は完了です。

confirmation email(確認メール)が届いているか確認します。中身を確認し、Confirm my accountをクリックしてください。

アカウント作成に関する作業は以上で完了です。
ログイン画面が下記となります。Demo inboxをクリックしてください。

Demo Inboxに移動すると下記の画面が表示されます。SMTP/POP3の情報が表示されており、IntegrationにはcURLでの利用方法が表示されています。

Integrationsの下にあるプルダウンメニューを選択することでアプリケーションに適した情報をその下に表示してくれます。Laravelを使用する際にはLaravelを選択するとLaravelの.envファイルにそのままコピ&ペーストできる形で接続情報が表示されます。

下記に表示されている内容を.envファイルにコピー&ペーストしてください。


Laravelからテストメール送信
Laravelからのテストメール送信してMailtrapにメールが届くのか動作確認を行います。
Laravelのインストールディレクトリにある.envファイルを開き先ほどプルダウンメニューで確認したMailtrapの情報に書き換えます。XXXXXはMailtrapのアカウントによって異なる情報です。
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=XXXXXXX
MAIL_PASSWORD=XXXXXXX
MAIL_FROM_ADDRESS=from@example.com
MAIL_FROM_NAME=Example
次にコントローラーの作成を行います。
$ php artisan make:controller MailSendController
web.phpにルーティングを追加します。
Route::get('/mail', 'MailSendController@index');
MailSendControllerコントローラーにメールを送信するコードを記述します。
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
class MailSendController extends Controller
{
public function index(){
$data = [];
Mail::send('emails.welcome', $data, function($message){
$message->to('abc987@example.com', 'Test')
->subject('This is a test mail');
});
}
}
toには送信した宛先のメールを入力し、subjectにはメールのタイトルを設定しています。メールの中身はemails.testに記述します。emails.welcomeはLaravelのブレードファイルでresourcesディレクトリの下にemailsディレクトリを作成し、welcome.blade.phpを作成します。
welcome.blade.phpの中身は下記を記述します。
メール送信のテストです。
ブラウザから/mailにアクセスするとメールが送信され、MailtrapのInboxを見るとメールが受信できていることが確認できます。このようにテストメールを送信したい場合は、.envファイルにMailTrapのSMTP情報を記述するだけで簡単に行うことができます。

Laravelからのメール送信方法については下記を参考にしてください。