Laravel でメールを送信するための詳細なガイド

公開: 2022-10-21

メール送信にLaravelを選ぶべき理由

Laravel は、Web アプリや Web サイトの構築に使用される PHP フレームワークです。 その接続性と最新性により、Laravel を使用してメールを送信するのは簡単です。次の機能を利用できます。

  • ローカル サービスとクラウド サービスの両方を介したメール送信の統合
  • メールのキューイング
  • マークダウンのサポート
  • HTML メール
  • さまざまなメディア タイプの添付と埋め込み
  • メール テンプレート
  • ブラウザ内プレビュー
  • ローカリゼーション

ご覧のとおり、フレームワークはメール送信に必要なすべてを提供します。

ララベルのインストール

マシンに Laravel をインストールするために必要な手順は、使用しているオペレーティング システムによって異なります。 ただし、代わりに、Laravelの組み込みソリューションであるSailDockerインストールすることで、Laravel をインストールすることもできます これは、公式ドキュメントで推奨されている Laravel のインストールを完了する簡単な方法です

このフレームワークは、Symfony Mailer コンポーネントを通じて広範な電子メール ドライバーを提供する Mail API も提供します。 どのように設定できるかを議論しましょう。

初期設定要件

コンポーネントの初期設定をセットアップするには、 config/mail.phpにアクセスして、メール送信のデフォルト設定を確認します。

<?php

戻る [

'default' => env('MAIL_MAILER', 'smtp'),

'メーラー' => [

'smtp' => [

'トランスポート' => 'smtp',

'ホスト' => env('MAIL_HOST', 'smtp.mailgun.org'),

'ポート' => env('MAIL_PORT', 587),

'encryption' => env('MAIL_ENCRYPTION', 'tls'),

'ユーザー名' => env('MAIL_USERNAME'),

'パスワード' => env('MAIL_PASSWORD'),

'タイムアウト' => null,

'auth_mode' => null,

]、

ご覧のとおり、メール ドライバーは SMTP に設定されています。 サーバーの値を設定するか、ドライバーを別のものに変更するには、 .envファイルに変更を適用します。

また、mailgun、sendmail、ses などの他のドライバーも使用できます。これらもすべてサポートされています。

'セス' => [

'transport' => 'ses',

]、

'メールガン' => [

'輸送' => 'メールガン',

]、

'消印' => [

'輸送' => '消印',

]、

'sendmail' => [

'transport' => 'sendmail',

'パス' => '/usr/sbin/sendmail -bs',

]、

'ログ' => [

'輸送' => 'ログ',

'チャンネル' => env('MAIL_LOG_CHANNEL'),

]、

'配列' => [

'輸送' => '配列',

]、

]、

また、すべてのメールが同じアドレスから送信されている場合は、次の方法を使用できます。

'から' => [

'アドレス' => env('MAIL_FROM_ADDRESS', '[email protected]'),

'名前' => env('MAIL_FROM_NAME', '例'),

]、

もちろん、メールをカスタマイズすることも、Laravel のデフォルト設定をそのまま使用することもできます。

'マークダウン' => [

'テーマ' => 'デフォルト',

'パス' => [

resource_path('views/vendor/mail'),

]、

]、

];

これで、メール API 構成のセットアップが完了しました。

メール可能なクラスを作成する

次に、メールを送信するための Mailable クラスを作成する必要があります。これは職人のコマンドで実行できます。

php artisan make:mail DemoEmail

これで、 app/Mail/DemoEmail.php空のテンプレートができました。これをさらに入力して、すぐに使用できるテンプレートを取得します。

Laravel Mail を使用する際のポイント

Laravel を使用してメールを送信する方法を学ぶには、メールを作成し、テンプレートを作成し、フレームワークで実際にメッセージを送信する方法を知る必要があります。 これらのそれぞれを行う方法に関するガイドラインを次に示します。

laravelでメールを送る
出典:フリーピック

Laravel でメールを作成する方法

Mailable クラスを作成したら、電子メール メッセージの作成に取りかかることができます。 これを行うには、次を参照してください。

<?php

名前空間 App\Mail;

Illuminate\Bus\Queueable を使用します。

Illuminate\Contracts\Queue\ShouldQueue を使用します。

Illuminate\Mail\Mailable を使用します。

Illuminate\Queue\SerializesModels を使用します。

クラス DemoEmail は Mailable を拡張します

{

Queueable、SerializesModels を使用します。

公開 $デモ

パブリック関数 __construct($demo)

{

$this->demo = $demo;

}

パブリック関数 build()

{

return $this->from('[email protected]')

->view('mails.demo')

->text('mails.demo_plain')

->と(

[

'testVarOne' => '1',

'testVarTwo' => '2',

]))

->attach(public_path('/images').'/demo.jpg', [

'as' => 'demo.jpg',

'mime' => 'image/jpeg',

]);

}

}

ご覧のとおり、いくつかの方法が使用されています。

  • __consructは、テンプレートで使用されるオブジェクトを初期化します
  • buildは、添付ファイルやビューなどの他の値を初期化するために使用されます
  • mails.demoは、 resources/views/mails/demo.blade.phpのメール テンプレートに従ってメールのビューを設定します
  • textは、電子メールの単純なテキスト バージョンを設定します
  • attachは、 public/images/demo.jpgからメールに画像を添付します

作成したばかりのファイルを使用して、テンプレートを使用して実際の電子メール メッセージを作成する方法を見てみましょう。

Laravel メール テンプレートの作成

resources/views/mails/demo.blade.phpファイルにメールのテンプレートを作成しましょう

こんにちは <i>{{ $demo->レシーバー }}</i> さん

<p>これはテスト用のデモ メールです。 また、HTML バージョンです。</p>

<p><u>デモ オブジェクトの値:</u></p>

<div>

<p><b>デモ 1:</b>{{ $demo->demo_one }}</p>

<p><b>デモ 2:</b>{{ $demo->demo_two }}</p>

</div>

<p><u>With メソッドで渡される値:</u></p>

<div>

<p><b>testVarOne:</b>&nbsp;{{ $testVarOne }}</p>

<p><b>testVarTwo:</b>&nbsp;{{ $testVarTwo }}</p>

</div>

ありがとうございました、

<br/>

<i>{{ $demo->送信者}}</i>

次に、プレーン テキスト バージョンを作成しましょう。

こんにちは {{ $demo->receiver }} さん

これはテスト用のデモ メールです。 また、HTML版です。

デモ オブジェクトの値:

デモ 1: {{ $demo->demo_one }}

デモ 2: {{ $demo->demo_two }}

With メソッドによって渡される値:

testVarOne: {{ $testVarOne }}

testVarOne: {{ $testVarOne }}

ありがとうございました、

{{ $demo->送信者}}

これで、Mailable クラスを介して作成された電子メール テンプレートを使用する準備が整いました。

Laravelでメールを送る

Laravel と作成したばかりの Mailable クラスを使用してメールを送信するには、まずapp/Http/Controllers/MailController.phpに空のコントローラー ファイルを作成します。

php artisan make:controller MailController

ファイルの内容を次のように置き換えます。

<?php

名前空間 App\Http\Controllers;

App\Http\Controllers\Controller を使用します。

App\Mail\DemoEmail を使用します。

Illuminate\Support\Facades\Mail を使用します。

クラス MailController は Controller を拡張します

{

パブリック関数 send()

{

$objDemo = new \stdClass();

$objDemo->demo_one = 'デモ 1 つの値';

$objDemo->demo_two = 'デモ 2 の値';

$objDemo->sender = 'SenderUserName';

$objDemo->receiver = 'ReceiverUserName';

Mail::to(“[email protected]”)->send(new DemoEmail($objDemo));

}

}

ご覧のとおり、 Illuminate\Support\Facades\Mail Facade を使用して電子メールを送信し、 sendメソッドで Mailable を初期化しています。

これで、メール送信が機能するかどうかをテストできます。 これには 2 つの方法があります。

  • 必要なルートをroutes/web.phpファイルに追加します。

Route::get('mail/send', '[email protected]');

  • config/mail.phpファイルに移動し、 MAIL_DRIVERの値logに設定し、上記のリンクを実行して、テンプレートがstorage/logs/laravel.logに記録されているかどうかを確認します— 記録されている場合、メール送信は正常に機能します。

オプション b) には、実際に送信される電子メールの送信は含まれないことに注意してください。 代わりにログをファイルに追加するだけです。

Laravel のバージョン

Laravel は、半年ごとにバグを修正し、毎年セキュリティの問題を修正するために新しいバージョンをリリースしていました。 現在、すべての修正の新しいバージョンのリリースは、Symphony フレームワークのリリースと同期するために毎年行われます。

2022 年 10 月に利用可能な Laravel の最新バージョンはバージョン 9 (LTS) で、PHP バージョン 8 以降に適しています。 Laravel 9 (LTS) の新機能については、この更新:

  • PHP 8 が必要です
  • Swift Mailer の代わりに Symfony Mailer と新しい Laravel Scout データベース エンジンを搭載
  • コントローラルートグループ、フルテキストインデックス、およびwhereの使用を有効にします
  • Eloquent の改善されたアクセサーとミューテーターを提供します
  • 以前は利用できなかった他の機能を提供します

興味深いことに、Laravel はバグ修正に 2 年間、セキュリティ修正に 3 年間の長期サポート (LTS) を提供しています。 そのため、2022 年 2 月 8 日にリリースされた現在のバージョン 9 は、2024 年 2 月 8 日までバグ修正のサポートを提供し、2025 年 2 月 8 日までセキュリティ修正をサポートします。

Laravel のバージョン 9 は、2022 年 9 月に長期サポートが終了したバージョン 6 に取って代わることに注意することが重要です。同時に、バージョン 7 と 8 はサポートされなくなったため、ユーザーはこれらのバージョンから Laravel にアップグレードする必要があります。 9 (LTS)。

SMTPを使用してLaravelでメールを送信する

Laravel でメールを送信する方法について説明したので、フレームワークで SMTP を使用してメール送信を設定する方法を見てみましょう。

Laravel Gmail SMTP の構成

Laravel で Gmail SMTP をセットアップするには、基本設定の構成から始める必要があります。 以下を使用して.envファイルを更新します。

MAIL_DRIVER=smtp

MAIL_HOST=smtp.googlemail.com

メールポート=465

MAIL_USERNAME=ENTER_YOUR_EMAIL_ADDRESS(GMAIL)

MAIL_PASSWORD=ENTER_YOUR_GMAIL_PASSWORD

MAIL_ENCRYPTION=ssl

次に、変更する必要のある Gmail アカウントのセキュリティ設定がいくつかあります。 そのため、Google アカウントの設定、[セキュリティ] の順に移動し、セキュリティ設定を確認してください。 Gmailアカウントの設定は以上です。

次のステップは、Gmail SMTP を介して Laravel でメールを送信することです。 コントローラーを作成し、以下を挿入します。

パブリック関数 mail()

{

$to_name = 'RECEIVER_NAME';

$to_email = 'RECEIVER_EMAIL_ADDRESS';

$data = array('name'=>”Cloudways (sender_name)”, “body” => “テストメール”);

Mail::send('mail', $data, function($message) use ($to_name, $to_email) {

$message->to($to_email, $to_name)

->subject(Laravel テストメール');

$message->from('SENDER_EMAIL_ADDRESS','テストメール');

});

return '電子メールが正常に送信されました';

}

ここで、Blade ファイルを作成してmail.blade.phpという名前を付け、次のコードを挿入します。

こんにちは <b>{{ $name }}</b> さん

<p>{{body}}</p>

これで、メールを送信するための Gmail SMTP がすべて設定されました。

Mailtrap と Laravel の統合

Laravel で SMTP を使用するもう 1 つの方法は、Mailtrap メール配信プラットフォームを統合することです。 このようにして、一括メール キャンペーンをテストしたり、Laravel にメール検証を追加したり、メール送信用の他の機能を取得したりできます。 Laravel 7 を使用して統合をセットアップする方法を見てみましょう。

メーリング用の SMTP サーバーを定義するには、 .envファイルに次を挿入します。

MAIL_MAILER=smtp

MAIL_HOST=smtp.mailtrap.io

メールポート=2525

MAIL_USERNAME=1a2b3c4d5e6f7g

MAIL_PASSWORD=1a2b3c4d5e6f7g

[email protected]

MAIL_FROM_NAME=例

ご覧のとおり、ホストは既に Mailtrap の偽の SMTP サーバーに設定されています。 ここで、ユーザー名、パスワード、アドレス、名前などの残りの値を、資格情報と正確な情報で更新する必要があります。

次に、 app/Mailに配置されるMailtrapExample.phpという名前の Mailable クラスを作成する必要があります。 これを行うには、次を実行します。

php artisan make:mail メールトラップの例

次に、テンプレートを変更して、メールの件名である送信者を追加し、Markdown のサポートを導入するなど、メール構成を準備します。

<?php

名前空間 App\Mail;

Illuminate\Bus\Queueable を使用します。

Illuminate\Mail\Mailable を使用します。

Illuminate\Queue\SerializesModels を使用します。

Illuminate\Contracts\Queue\ShouldQueue を使用します。

クラス MailtrapExample は Mailable を拡張します

{

Queueable、SerializesModels を使用します。

/**

* 新しいメッセージ インスタンスを作成します。

*

* @return void

*/

パブリック関数 __construct()

{

///

}

/**

* メッセージを作成します。

*

* @return $this

*/

パブリック関数 build()

{

return $this->from('[email protected]', 'Mailtrap')

->subject('メールトラップの確認')

->markdown('mails.exmpl')

->([

'name' => '新しい Mailtrap ユーザー',

'リンク' => '/受信ボックス/'

]);

}

次に、Blade テンプレートを使用して電子メール メッセージの本文を処理します。テンプレート ファイルを含むディレクトリをmails.exmplに作成し、次のコマンドを実行します。

@component('メール::メッセージ')

こんにちは **{{$name}}**、{{– 改行にはダブルスペースを使用してください –}}

Mailtrap をお選びいただき、ありがとうございます。

以下をクリックして、今すぐ作業を開始してください

@component('mail::button', ['url' => $link])

受信トレイに移動

@endcomponent

心から、

メールトラップチーム。

@endcomponent

次に、 routes/web.phpを編集して、メール送信のルートを指定します。

<?php

App\Mail\MailtrapExample を使用します。

Illuminate\Support\Facades\Mail を使用します。

Route::get('/send-mail', function () {

Mail::to('[email protected]')->send(new MailtrapExample());

return 'メールトラップにメッセージが送信されました!';

});

これで、アプリケーションを実行できます — php artisan serve実行し、ブラウザーで/send-mailに移動します。 それだけです。Mailtrap の受信トレイにメール メッセージが表示されます。

最後に

PHP Laravel を使用すると、大量のメール、HTML メール、添付ファイル付きのメールを簡単に送信できます。 キャンペーンのニーズに応じて、説明されている最も適切なガイドラインを選択して、Web アプリのメール送信を設定できます。