目次
1. はじめに
2. 電子メールの送信
3、邮件&本地开发
4、 事件
ホームページ バックエンド開発 PHPチュートリアル [ Laravel 5.2 ドキュメント ] サービス -- メール

[ Laravel 5.2 ドキュメント ] サービス -- メール

Jun 20, 2016 pm 12:37 PM

1. はじめに

Laravel は、SwiftMailer ライブラリに基づいたクリーンでリフレッシュされた電子メール API を提供します。 Laravel は SMTP、Mailgun、Mandrill、Amazon SES、PHP のメール機能、sendmail 用のドライバーを提供しており、ローカルまたはクラウド サービスを通じて電子メールを迅速に送信できます。

メール ドライバーの予備知識

Mailgun や Mandrill などのドライバーベースの API は、一般に SMTP サーバーよりもシンプルで高速です。すべての API ドライバーでは、アプリケーションに Guzzle HTTP ライブラリがインストールされている必要があります。次の行をcomposer.json ファイルに追加することで、プロジェクトに Guzzle をインストールできます:

"guzzlehttp/guzzle": "~5.3|~6.0"
ログイン後にコピー

Mailgun driver

Mailgun ドライバーを使用するには (Mailgun は最初の 10,000 通の電子メールに対して無料です)以降の料金は有料です), まず Guzzle をインストールし、次に設定ファイル config/mail.php でドライバー オプションを mailgun に設定します。次に、設定ファイル config/services.php に次のオプションが含まれていることを確認します。

'mailgun' => [    'domain' => 'your-mailgun-domain',    'secret' => 'your-mailgun-key',],
ログイン後にコピー

Mandrill ドライバー

Mandrill ドライバーを使用するには (Mandrill は中国でのユーザー登録をサポートしていません。汗) !)、まず Guzzle をインストールしてから、構成ファイル config/mail.php でドライバー オプションの値を mandrill に設定します。次に、設定ファイル config/services.php に次のオプションが含まれていることを確認します。

'mandrill' => [    'secret' => 'your-mandrill-key',],
ログイン後にコピー

SES ドライバー

Amazon SES ドライバー (有料) を使用するには、Amazon AWS をインストールします。 PHP SDK では、composer.json ファイルの require セクションに次の行を追加してライブラリをインストールできます:

"aws/aws-sdk-php": "~3.0"
ログイン後にコピー

次に、構成ファイル config/mail.php のドライバー オプションを ses に設定します。 。次に、構成ファイル config/services.php に次のオプションが含まれていることを確認します。

'ses' => [    'key' => 'your-ses-key',    'secret' => 'your-ses-secret',    'region' => 'ses-region',  // e.g. us-east-1],
ログイン後にコピー

2. 電子メールの送信

Laravel では電子メール情報を保存できます。たとえば、電子メールを整理するには、resources/views ディレクトリの下に電子メール ディレクトリを作成します。

メッセージを送信するには、メール ファサードの send メソッドを使用します。 send メソッドは 3 つのパラメータを受け取ります。最初のパラメータは電子メール情報を含むビューの名前です。2 番目のパラメータはビューに渡す配列データです。3 番目のパラメータは受信者、件名をカスタマイズできます。および電子メールのその他の側面:

<?phpnamespace App\Http\Controllers;use Mail;use App\User;use Illuminate\Http\Request;use App\Http\Controllers\Controller;class UserController extends Controller{    /**     * 发送邮件给用户     *     * @param  Request  $request     * @param  int  $id     * @return Response     */    public function sendEmailReminder(Request $request, $id)    {        $user = User::findOrFail($id);        Mail::send('emails.reminder', ['user' => $user], function ($m) use ($user) {            $m->from('hello@app.com', 'Your Application');$m->to($user->email, $user->name)->subject('Your Reminder!');        });    }}
ログイン後にコピー

上の例ではユーザー キーを含む配列を渡したので、次のように電子メールにユーザー名を表示できます:

<?php echo $user->name; ?>
ログイン後にコピー

注: $message 変数は常にメール ビューに渡され、埋め込み添付ファイルが許可されるため、ビューのロードでメッセージ変数を渡さないようにする必要があります。

メッセージの構築

前述したように、send メソッドに渡される 3 番目のパラメーターは、電子メール メッセージ自体に複数のオプションを指定できるクロージャです。このクロージャーを使用して、メッセージの他のプロパティ (CC、グループなど) を指定します。

Mail::send('emails.welcome', $data, function ($message) {    $message->from('us@example.com', 'Laravel');    $message->to('foo@example.com')->cc('bar@example.com');});
ログイン後にコピー

$message メッセージ ビルダー インスタンスでは次のメソッドが使用できます:

$message->from($address, $name = null);$message->sender($address, $name = null);$message->to($address, $name = null);$message->cc($address, $name = null);$message->bcc($address, $name = null);$message->replyTo($address, $name = null);$message->subject($subject);$message->priority($level);$message->attach($pathToFile, array $options = []);// 从$data字符串追加文件...$message->attachData($data, $name, array $options = []);// 获取底层SwiftMailer消息实例...$message->getSwiftMessage();
ログイン後にコピー

注: Mail::send クロージャに渡されるメッセージ インスタンスは SwiftMailer メッセージ クラスを継承するため、そのクラスの任意のメソッドを呼び出して独自の電子メール メッセージを作成できます。

プレーン テキスト メッセージ

デフォルトでは、send メソッドに渡されるビューには HTML が含まれていると想定されますが、send メソッドの最初の引数として配列を渡すことで、 HTML ビューに加えてプレーン テキスト ビューを送信するように指定できます:

Mail::send(['html.view', 'text.view'], $data, $callback);
ログイン後にコピー

あるいは、プレーン テキストの電子メールを送信するだけの場合は、配列でテキスト キーを指定できます:

Mail::send(['text' => 'view'], $data, $callback);
ログイン後にコピー

ネイティブ文字 文字列電子メール

生の文字列電子メールを直接送信したい場合は、生のメソッドを使用できます:

Mail::raw('Text to e-mail', function ($message) {    //});
ログイン後にコピー

2.1 添付ファイル

電子メールに添付ファイルを追加するには、クロージャの $message オブジェクトの Attach メソッドに pass を使用します。このメソッドは、最初の引数としてファイルへの絶対パスを受け取ります:

Mail::send('emails.welcome', $data, function ($message) {    //    $message->attach($pathToFile);});
ログイン後にコピー

メッセージにファイルを追加するとき、2 番目の引数として配列を渡すことでファイルの表示名と MIME タイプを指定することもできます。

$message->attach($pathToFile, ['as' => $display, 'mime' => $mime]);
ログイン後にコピー

2.2 インライン添付ファイル

メールビューへの画像の埋め込み

電子メールへのインライン画像のネストは、多くの場合扱いにくいですが、Laravel では次のことが可能です。電子メールに画像を添付し、対応する CID を取得する便利な方法。インライン画像を埋め込むには、電子メール ビューの $message 変数で embed メソッドを使用します。 Laravel は、$message 変数をすべてのメール ビューに自動的に渡して利用可能にすることを忘れないでください。

<body>    Here is an image:    <img src="<?php echo $message->embed($pathToFile); ?>"></body>
ログイン後にコピー

メール ビューへのネイティブ データの埋め込み

メール メッセージに埋め込みたい場合ネイティブ データ文字列の場合は、$message 変数で embedData メソッドを使用できます。

<body>    Here is an image from raw data:    <img src="<?php echo $message->embedData($data, $name); ?>"></body>
ログイン後にコピー

2.3 Mail Queue

Mail Message Queue

メール メッセージの送信には、かなりの時間がかかる場合があります。アプリケーションの応答時間を改善するために、多くの開発者はメールをキューに入れて送信し、それをバックグラウンドで実行することを選択します。Laravel は組み込みの統合キュー API を使用してこれを実現します。電子メール メッセージをキューに入れるには、メール ファサードでキュー メソッドを使用します。

Mail::queue('emails.welcome', $data, function ($message) {    //});
ログイン後にコピー

このメソッドは、バックグラウンドで送信するために電子メール タスクを自動的にキューにプッシュします。もちろん、この機能を使用する前にキューを設定する必要があります。

遅延メッセージキュー

如果你想要延迟已经放到队列中邮件的发送,可以使用 later方法。只需要传递你想要延迟发送的秒数作为第一个参数到该方法即可:

Mail::later(5, 'emails.welcome', $data, function ($message) {    //});
ログイン後にコピー

推入指定队列

如果你想要将邮件消息推送到指定队列,可以使用 queueOn和 laterOn方法:

Mail::queueOn('queue-name', 'emails.welcome', $data, function ($message) {    //});Mail::laterOn('queue-name', 5, 'emails.welcome', $data, function ($message) {    //});
ログイン後にコピー

3、邮件&本地开发

开发发送邮件的应用时,你可能不想要真的发送邮件到有效的电子邮件地址,而只是想要做下测试。Laravel提供了几种方式“禁止”邮件的实际发送。

日志驱动

一种解决方案是在本地开发时使用 log邮件驱动。该驱动将所有邮件信息写到日志文件中以备查看,想要了解更多关于每个环境的应用配置信息,查看配置文档。

通用配置

Laravel提供的另一种解决方案是为框架发送的所有邮件设置通用收件人,这样的话,所有应用生成的邮件将会被发送到指定地址,而不是实际发送邮件指定的地址。这可以通过在配置文件 config/mail.php中设置 to选项来实现:

'to' => [    'address' => 'dev@domain.com',    'name' => 'Dev Example'],
ログイン後にコピー

Mailtrap

最后,你可以使用 Mailtrap服务和 smtp驱动发送邮件信息到“虚拟”邮箱,这种方法允许你在Mailtrap的消息查看器中查看最终的邮件。

4、 事件

Laravel 会发送邮件前触发一个事件,记住,这个事件是在邮件被发送时触发,而不是推送到队列时,你可以在 EventServiceProvider中注册事件监听器:

/** * The event listener mappings for the application. * * @var array */protected $listen = [    'Illuminate\Mail\Events\MessageSending' => [        'App\Listeners\LogSentMessage',    ],];
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

PHPにおける後期静的結合の概念を説明します。 PHPにおける後期静的結合の概念を説明します。 Mar 21, 2025 pm 01:33 PM

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

フレームワークセキュリティ機能:脆弱性から保護します。 フレームワークセキュリティ機能:脆弱性から保護します。 Mar 28, 2025 pm 05:11 PM

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 フレームワークのカスタマイズ/拡張:カスタム機能を追加する方法。 Mar 28, 2025 pm 05:12 PM

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? PHPのCurlライブラリを使用してJSONデータを含むPOSTリクエストを送信する方法は? Apr 01, 2025 pm 03:12 PM

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

See all articles