広告

【Laravel】開発時のメール送信【Mailtrap】

Laravel

当サイトではアフィリエイト広告を利用しています。

広告

はじめに

メール送信テストツールのMailtrapの使い方やメリットなどをまとめ、実際に試してみます。
メール送信を行うアプリケーションを開発する際に、非常に便利です。

今回は、Laravelのプロジェクトを作成し試してみますが、もちろんLaravel以外でもメール送信を行う開発に利用することができます。

それでは早速試してみましょう。

Laravel Sailでの開発環境の構築方法は以下をご覧ください。

Windows
Laravel Sailで開発環境構築【Vite対応】
今回は、Laravel Sailを使って環境の構築を行いました。 SailはDockerですので、開発環境を簡単に用意することもできますし、カスタマイズすることも楽です。
Mac
【M1 Mac】Laravel Sailで開発環境構築【Vite対応】
Laravel Sailを使って環境の構築を行いました。 SailはDockerですので、開発環境を簡単に用意することもできますし、カスタマイズすることも楽です。

なお、Laravel Sailでは、Mialpitという類似のツールが初めから使えるようになっております
Mailpitにつきましては、以下の記事を参考にしてください。

【Laravel】開発用のメールサーバーを使おう【Mailpit】
開発用のメールサーバーであるMailpitを試してみます。メール送信を行うアプリケーションを開発する際に、非常に便利です。

以前Sailで採用されていたMailHogにつきましては、以下の記事を参考にしてください。

【Laravel】開発用のメールサーバーを使おう【MailHog】
開発用のメールサーバーであるMailHogを試してみます。メール送信を行うアプリケーションを開発する際に、非常に便利です。
使用するバージョン
  • Windows 11 or macOS Monterey (M1)
  • Laravel Framework 8 or 9 or 10

2022/04/20 WindowsとMacを使い、最新バージョンで確認しました。
2023/03/11 Laravel10で確認しました。

他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。

広告

【紹介】個人開発

私の個人開発ですがQuiphaというサービスを開発しました。(Laravel, Vue3など)
良かったら、会員登録して動作を試してみて下さい。

また、Laravel 9 実践入門という書籍を出版しました。
Kindle Unlimitedを契約している方であれば、読み放題で無料でご覧いただくことができます

是非多くの方に読んでいただき、Laravelの開発に少しでもお役に立てたら幸いです。

Mailtrapについて

概要

Mailtrapはテスト用のメールサーバで、メール送信を行うことができ、メールはブラウザで確認することができます。

Mailtrap: Modern Email Delivery for dev and product teams
Modern Email Delivery Platform for developer & product teams. Fast delivery. High inboxing rates. 24/7 expert support. E…

無料でも利用することができます。
それほど大量のメール送信を行わなければ、無料枠でも足りると思います。

Pricing | Mailtrap
Send transactional, bulk, and marketing emails using Mailtrap's reliable Email API/SMTP. Straightforward and scalable pl…

メリット1

メール送信のプログラムを作成し、動作確認しようとすると、例えば以下のようなやり方があります。

  • SMTPサーバーを用意(メールサーバ)
  • 存在するメールアカウントを用意
  • メールアカウントにテストメールを送信し、メールアカウントの受信ボックスでメールを確認

その場合、誤って本番のメールアカウントにメールが送信されてしまったら、大事でしょう。

また、メール送信プログラムに不具合があって、大量に誤送信してしまったなど、影響が大きく、信頼を損なったり、迷惑をかけてしまうことになります。

Mailtrapは、送信先のメールアドレスにメールは送信せず、送ったメールはWebブラウザでMailtrap上で確認することができます。

万が一誤送信をしても、全く問題ありません。

メリット2

複数のメールアカウントにメール送信のテスト行いたい場合、実在するメールアカウントを用意するのは面倒でしょう。

Mailtrapを使用すると、実際に存在しないメールアカウントでも問題ありません。
送ったメールは、直ぐにMailtrap上から確認できます。

メリット3

Mailtrapのアカウントを作成すると、テスト用のSMTPサーバー情報を取得することができます。
LaravelのSMTPの設定に記述するだけ導入は完了です。

また、本番サーバーでは、SMTP先を変更するだけですので、運用的にも楽です。

広告

Mailtrapのアカウント作成

Mailtrapのアカウントを登録しましょう。サインアップを開きます。

Mailtrap – Email Delivery Platform
Sign up and cover your entire email infrastructure in one place: test and debug emails in staging with Email Testing, th…

無料で利用するのに、クレジットカードの登録などは不要です。
アカウント作成後、すぐに利用することができます。

アカウントは、Googleアカウントなどで連携するか、メールアドレスでアカウントを作成しましょう。

サインイン後、受信トレイの設定が開かれます。

SMTP情報が確認できますので、基本的にはどんな開発にも使えます。

各種設定のフォーマットで、設定値を取得することができます。
今回は、プルダウンから「Laravel 7+」を選択しました。

Django、CakePHP、CodeIgniter、FuelPHP、Symforny、WordPressなど、多くの設定ファイルに対応しています。
もちろんプルダウンにない場合でも、SMTP情報がありますので、どんな環境でも使用できます。

Laravelの.envファイルにそのまま追記できる形式で、サーバー・ユーザー・パスワードなどが記述されています。
右上のCopyボタンをクリックし、Laravelプロジェクトの.envに貼り付けるだけです。

Laravelの設定とメール送信

メール送信を試してみましょう。
以前記事にまとめました、Laravelの認証機能の導入 (Breeze)を参考に、プロジェクトを用意しました。

【Laravel8/9/10】認証機能の導入 (Breeze)
Laravel8の認証機能(ログイン機構)を導入したいと思います。 シンプルで最小限の認証機能である、Breezeを導入します。 Laravelの導入から詳しく解説しています。

.envファイルを開き、先程コピーした設定値を貼り付けます。
デフォルトは以下のようになっていますので、上書きしましょう。

MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

以下の項目も設定しましょう。(送信元メールアドレスを任意で)

MAIL_FROM_ADDRESS=xxx@gmail.com

上記の設定をしない場合、「Cannot send message without a sender address」というエラーがLaravel上で発生します。

アカウント登録画面を開き、アカウントを登録しました。
存在しないメールアドレスでも問題ありません。

メール送信を試すために、「Forgot your password?」をクリックします。

先程アカウント登録したメールアドレスを指定します。

パスワードのリセットリンクが、メール送信されました。

Mailtrapを確認しましょう。一通メールが届いています。

受信ボックスを確認しますと、メールの本文が確認できます。

HTMLメール、テキストメールの本文や、メールの生データも確認できます。

面白い機能として、送信されたメールがスパム判定されるかどうか解析を見ることができました。
メールサーバーのIPアドレスがブラックリストに載っていないかなどの結果が見れます。

送信したメールが、迷惑メールに格納された、または、そもそも届かないというケースがあると思いますが、参考になると思います。

送信元メールアドレスのドメインでチェックされているようです。
送信元メールアドレスは、本番と同様のメールアドレスを指定しておくと良いでしょう。

Laravelのメール送信をログに出力

Mailtrapを無料で使う場合、メール送信数に上限があります。
(現時点で、1ヶ月あたり500通)

メール送信の開発を行う場合は、まずはメールの内容をログに出力し確認するのが効率的だと思います。

ある程度の動作確認が取れたら、Mailtrapを利用すると良いでしょう。

.envファイルを開き、以下の項目を変更します。

MAIL_MAILER=log

先程と同じく、メール送信を試してみましょう。
Laravelのログファイルを確認します。

storage\logs\laravel.log

やや分かりにくいかも知れませんが、ログファイルに、メールアドレスやメール本文などが出力されます。
ちょっとした確認や試すのは、ログファイルに出力するのも良いと思います。

その他

初学者へ

Laravelを初めて触る方へ向け、手順やアドバイスをまとめました。

外部サーバーへ公開

作成したアプリは公開して使ってもらいましょう!
Laravelアプリケーションを外部公開する方法をまとめました。

脆弱性対策

脆弱性を抱えたアプリケーションの場合、攻撃を受ける可能性があり大変危険です。
作成したアプリケーションは、脆弱性対策も意識しましょう。

GitHubと連携

GitHubと連携する方法を解説しました。
プロジェクトの管理はGitHubを活用しましょう。

GitHub Copilot

GitHub Copilotを導入し、AIにコーディングをサポートしてもらうこともできます。

さいごに

メール送信を行うアプリケーションを開発する場合は、Mailtrapの導入は非常に効果的です。
是非活用しましょう。

他にも私のブログで、Laravelについて解説している記事がありますのでご覧ください。

LaravelMacOSPHPWindowsプログラミング
広告

個人開発

千草 @chigusaweb

現役のITエンジニア。 気ままにコードを書いたり技術情報を発信しています。 Webアプリ/Windows・Macアプリ/モバイルアプリなど。 (Java, PHP, Javascript, Swift, Python, C#, 他) 個人開発:Clibor, Quipha, TXT-Crypter, 符計算特訓, チグサツール Kindle本: Laravel9 実践入門, 他

クリップボード履歴

Clibor

Windows

Cliborはシンプルで高機能なクリップボード履歴ソフトです。
また普段よく使うワードを定型文として登録し、いつでもクリップボードに保存することができます。高度なテキスト整形・FIFOモード・ホットキーに対応。

クリップボード履歴

Windows版Cliborの利便性を、そのままMacでも。
定型文登録、高度なテキスト整形、FIFOモードなど、便利なクリップボード履歴機能を利用できます。macOS最新のTahoeにも対応。

テキスト暗号化

テキストを暗号化してURLで共有・保存できる無料サービスです。
パスフレーズを知る人だけが復号できます。登録不要、データはサーバーに保存されません。
Notionでも利用できます。

学習

Quipha

Web / iOS

自分だけの問題集や問題を作成し、クイズを行い、学習に活用することができるアプリです。
例えば、学校の授業、語学学習、IT資格やその他の資格など多彩な分野での学習を支援します。
いつでも、どこでも、あなたの学習をサポート。

ツール

日常の「ちょっとした効率化」をサポートするWeb便利ツール集。
テキスト・データ処理から最新のAI連携まで、日々のちょっとした手間でググりがちなユーティリティを1つの場所に集約。

麻雀

麻雀の符計算をひたすら特訓しマスターしましょう。
初心者の方はもちろん、もっと速く計算したい方にも役立ちます。
5万対局以上の実践から問題を収録。

コメント

タイトルとURLをコピーしました