LARAVEL 5.3メール送信拡張機能:カスタムデータベースメールログ
Laravel 5.3は、さまざまな人気のあるサービスを通じてメールを構成および送信する簡単な方法を提供し、開発用のログアシスタントプログラムが含まれています。ただし、利用可能なすべてのサービスをカバーするわけではなく、既存のメールドライバーシステムの拡張が必要になる場合があります。
キーポイント:
IlluminateMailMailServiceProvider
を拡張でき、register
メソッドを実装できます。これにより、迅速なメーラーインスタンスをコンテナにバインドする新しいトランスポートマネージャーを作成できます。 config/app.php
ファイルに追加し、メールドライバーをconfig/mail.php
ファイルのdb
に登録します。
Laravelは、メール配信を含む多くの実用的な機能を提供します。さまざまな人気のあるサービスを通じてメールを簡単に構成および送信できます。また、開発用のログアシスタントプログラムも含まれています。
Mail::send('emails.welcome', ['user' => $user], function ($m) use ($user) { $m->to($user->email, $user->name)->subject('Welcome to the website'); });
これにより、emails.welcome
ビューを使用して、Webサイトで新しく登録されたユーザーにメールを送信します。 Laravel 5.3で郵送可能を使用すると、簡単になります(ただし、古い構文はまだ有効です)。
以下は例です:
# 生成一个新的可邮件类 php artisan make:mail WelcomeMail
// app/Mail/WelcomeMail.php class WelcomeUser extends Mailable { use Queueable, SerializesModels; public $user; public function __construct(User $user) { $this->user = $user; } public function build() { return $this->view('emails.welcome'); } }
// routes/web.php Route::get('/', function () { $user = User::find(2); \Mail::to($user->email)->send(new WelcomeUser($user)); return "done"; });
例をシンプルで明確にするために、メールログをデータベーステーブルにログに記録します。
Mail::send('emails.welcome', ['user' => $user], function ($m) use ($user) { $m->to($user->email, $user->name)->subject('Welcome to the website'); });
フォルダーに新しいクラスが作成されます。 Laravelサービスプロバイダーに精通している場合は、app/Providers
およびServiceProvider
メソッドを定義したことがわかります。ドキュメントでプロバイダーの詳細を読むことができます。 boot
メールプロバイダーを使用してregister
IlluminateMailMailServiceProvider
register
# 生成一个新的可邮件类 php artisan make:mail WelcomeMail
親メソッドを呼び出して、自分のregisterSwiftMailer
転送マネージャーmail.driver
を返す前にチェックを実行することです。 registerSwiftMailer
転送マネージャーを使用して
Laravelは、swift_mailerのswiftMailerインスタンスを返すIOCから
// app/Mail/WelcomeMail.php class WelcomeUser extends Mailable { use Queueable, SerializesModels; public $user; public function __construct(User $user) { $this->user = $user; } public function build() { return $this->view('emails.welcome'); } }
名前空間をチェックすると、各ドライバー(swift.mailer
、
// routes/web.php Route::get('/', function () { $user = User::find(2); \Mail::to($user->email)->send(new WelcomeUser($user)); return "done"; });
IlluminateMailTransport
クラスには、LogTransport
クラスを拡張することで満たすことができます。このように見えるはずです。 SparkPostTransport
ここで実装する唯一の方法は、Swift_Mailer
メソッドです。メール送信ロジックについて責任を負います。その場合、メールをデータベースにログに記録する必要があります。コンストラクターに関しては、外部の依存関係は必要ないため、今のところ空白のままにすることができます。 Swift_Transport
IlluminateMailTransportTransport
php artisan make:provider DBMailProvider
send
データベースへのメールを録画
次のステップは、データベーステーブルに必要な移行を作成することです。 $message->getTo()
array_keys
次に、テーブルと対話し、必要なフィールドを
// vendor/Illuminate/Mail/MailServiceProvider.php public function register() { $this->registerSwiftMailer(); // ... }
// app/Providers/DBMailProvider.php function registerSwiftMailer() { if ($this->app['config']['mail.driver'] == 'db') { $this->registerDBSwiftMailer(); } else { parent::registerSwiftMailer(); } }
Mail::send('emails.welcome', ['user' => $user], function ($m) use ($user) { $m->to($user->email, $user->name)->subject('Welcome to the website'); });
# 生成一个新的可邮件类 php artisan make:mail WelcomeMail
わかりました、今こそ、これまでに達成したことをテストする時です。最初に、プロバイダーをconfig/app.php
ファイルのプロバイダーのリストに追加します。
// app/Mail/WelcomeMail.php class WelcomeUser extends Mailable { use Queueable, SerializesModels; public $user; public function __construct(User $user) { $this->user = $user; } public function build() { return $this->view('emails.welcome'); } }
次に、config/mail.php
ファイルにdb
にメールドライバーを登録します。
// routes/web.php Route::get('/', function () { $user = User::find(2); \Mail::to($user->email)->send(new WelcomeUser($user)); return "done"; });
残りの唯一の部分は、テストメールを送信し、データベースにログインしているかどうかを確認することです。ホームページURLにアクセスするときにメールを送信します。以下はコードです。
php artisan make:provider DBMailProvider
ホームページルートにアクセスした後、php artisan tinker
コマンドを実行してemails
テーブルレコードを確認できます。
質問やコメントがある場合は、以下に投稿してください。答えを最大限に活用してください。
Laravel 5.3(FAQ)
でのメールロギングに関するFAQメソッドを使用して、メールドライバーにカスタム機能を追加できます。 php artisan make:provider
config/app.php
laravelでメールを記録する目的は何ですか? extend
Laravelでのメールロギングは、アプリケーションから送信されたすべての発信メールを追跡できる機能です。これは、どのメールがいつ、誰に送信されているかを正確に確認できるため、デバッグに非常に役立ちます。また、アプリケーションから送信されたすべての電子メール通信の記録を提供するため、監査にも非常に便利です。
laravelを構成するには、すべての発信メールを記録するには、
ファイルを変更する必要があります。このファイルでは、ディレクトリに保存されます。 config/mail.php
log
laravelで電子メールログを表示する方法は? true
Laravelのメールログは、storage/logs
ディレクトリに保存されます。これらのログを表示して、このディレクトリに移動してログファイルを開くことができます。ログファイルは日付に従って命名されるため、特定の日付のログを簡単に見つけることができます。
はい、Laravelでメールログの形式をカスタマイズできます。これは、メールドライバーを拡張し、log
メソッドをオーバーライドすることで実行できます。この方法では、ログメッセージの形式を指定できます。
(FAQの残りの部分は電子メール自体の送信に関連しており、この例の電子メールログ拡張機能とは何の関係もないため、省略されています)
画像パス/uploads/20250210/173915090467a9563807841.webp
および/uploads/20250210/173915090467a9563839bfc.webp
および/uploads/20250210/173915090667a9563a27b41.jpg
は、実際のアクセス可能な画像リンクに置き換える必要があることに注意してください。
以上がLaravel 5.3のメールロギング:メールドライバーの拡張の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。