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

Laravel以外でもSMTPサーバを使うものならなんでも利用することができます。

Mailtrapとは

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

Mailtrapイメージ
Mailtrapイメージ

Mailtrapへのアカウント作成

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

Mailtrapトップページ
Mailtrapトップページ

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

アカウント作成方法選択
アカウント作成方法選択

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

メールアドレスをパスワード入力
メールアドレスをパスワード入力

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

アカウント登録後に確認メール送信画面
アカウント登録後に確認メール送信画面

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

確認メールを受信
確認メールを受信

アカウント作成に関する作業は以上で完了です。

ログイン画面が下記となります。Demo inboxをクリックしてください。

ログイン後の画面
ログイン後の画面

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

Demo Inboxにアクセス後の画面
Demo Inboxにアクセス後の画面

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

Laravelを選択
Laravelを選択

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

Laravel .envで設定するパラメータ
Laravel .envで設定するパラメータ
選択しはRuby on Raill, Django, Cake PHP, WordPressなどいろいろなものがあります。

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情報を記述するだけで簡単に行うことができます。

送信されたメールをmailtrapで受信
送信されたメールをmailtrapで受信

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