本文書でもテストメールの送信の動作確認をする時に毎回利用している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をクリックしてください。

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

inboxにアクセスしてもメールを受信していないので、左側にはYour inbox is empty now(あたなのinboxは空です)と表示されています。

中央を見るとMailtrapのSMTPサーバの接続に関する情報が表示されています。

inboxアクセス後の画面
inboxアクセス後の画面

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

選択しはRuby on Raill, Django, Cake PHP, WordPressなどいろいろなものがあります。
Laravel用の設定情報
Laravel用の設定情報

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からのメール送信方法については下記を参考にしてください。