Версія фреймворка: 8.x

Пошта

Вступ

Laravel забезпечує чистий, простий API порівняно з популярнимSwiftMailerбібліотека з драйверами для SMTP, Mailgun, Postmark, Amazon SES таsendmail, що дозволяє швидко розпочати надсилання пошти через локальний або хмарний сервіс на ваш вибір.

Конфігурація

Послуги електронної пошти Laravel можна налаштувати черезmailфайл конфігурації. Кожен поштовий скринька, налаштований у цьому файлі, може мати власні параметри і навіть власний унікальний "транспорт", що дозволяє вашій програмі використовувати різні служби електронної пошти для надсилання певних повідомлень електронної пошти. Наприклад, ваша програма може використовувати поштовий штемпель для надсилання транзакційних повідомлень, а за допомогою Amazon SES - для масових повідомлень.

Передумови драйвера

Драйвери на основі API, такі як Mailgun та Postmark, часто простіші та швидші, ніж SMTP-сервери. Якщо можливо, слід скористатися одним із цих драйверів. Для всіх драйверів API потрібна бібліотека Guzzle HTTP, яку можна встановити через менеджер пакетів Composer:

composer require guzzlehttp/guzzle

Водій поштової зброї

Щоб використовувати драйвер Mailgun, спочатку встановіть Guzzle, а потім встановітьdefaultваріант у вашомуconfig/mail.phpфайл конфігурації доmailgun. Далі переконайтеся, що вашconfig/services.phpфайл конфігурації містить такі опції:

'mailgun' => [
    'domain' => env('MAILGUN_DOMAIN'),
    'secret' => env('MAILGUN_SECRET'),
],

Якщо ви не використовуєте "США"Регіон поштової зброї, ви можете визначити кінцеву точку вашого регіону вservicesфайл конфігурації:

'mailgun' => [
    'domain' => env('MAILGUN_DOMAIN'),
    'secret' => env('MAILGUN_SECRET'),
    'endpoint' => env('MAILGUN_ENDPOINT', 'api.eu.mailgun.net'),
],

Драйвер поштового штемпеля

Щоб використовувати драйвер поштового штемпеля, встановіть транспорт SwiftMailer Postmark через Composer:

composer require wildbit/swiftmailer-postmark

Далі встановіть Guzzle і встановітьdefaultваріант у вашомуconfig/mail.phpфайл конфігурації доpostmark. Нарешті, переконайтеся, що вашconfig/services.phpфайл конфігурації містить такі опції:

'postmark' => [
    'token' => env('POSTMARK_TOKEN'),
],

Драйвер SES

Щоб використовувати драйвер Amazon SES, спочатку потрібно встановити Amazon AWS SDK для PHP. Ви можете встановити цю бібліотеку, додавши наступний рядок до вашогоcomposer.jsonфайлівrequireрозділу та запускуcomposer updateкоманда:

"aws/aws-sdk-php": "~3.0"

Далі встановітьdefaultваріант у вашомуconfig/mail.phpфайл конфігурації доsesі переконайтеся, що вашconfig/services.phpфайл конфігурації містить такі опції:

'ses' => [
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
],

Якщо вам потрібно включитидодаткові опціїпри виконанні СЕСSendRawEmailВи можете визначитиoptionsмасив у вашомуsesконфігурація:

'ses' => [
    'key' => env('AWS_ACCESS_KEY_ID'),
    'secret' => env('AWS_SECRET_ACCESS_KEY'),
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    'options' => [
        'ConfigurationSetName' => 'MyConfigurationSet',
        'Tags' => [
            [
                'Name' => 'foo',
                'Value' => 'bar',
            ],
        ],
    ],
],

Генерування Mailables

У Laravel кожен тип електронного листа, надісланий вашою програмою, представлений як клас "доступний". Ці класи зберігаються вapp/Mailкаталог. Не хвилюйтеся, якщо ви не бачите цей каталог у своїй програмі, оскільки він буде створений для вас, коли ви створите свій перший доступний клас за допомогоюmake:mailкоманда:

php artisan make:mail OrderShipped

Написання Mailables

Вся конфігурація доступного класу виконується вbuildметод. У рамках цього методу ви можете викликати різні методи, такі якfrom,subject,view, іattachналаштувати презентацію та доставку електронного листа.

Налаштування відправника

ВикористанняfromМетод

Спочатку розглянемо налаштування відправника електронної пошти. Або, іншими словами, хто буде електронною поштою. Існує два способи налаштування відправника. По-перше, ви можете використовуватиfromметод у вашому доступному класі 'buildметод:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->from('example@example.com')
                ->view('emails.orders.shipped');
}

Використання глобальногоfromАдреса

Однак, якщо ваша програма використовує одну і ту ж адресу "з" для всіх своїх електронних листів, виклик телефону наfromу кожному доступному класі, який ви створюєте. Замість цього ви можете вказати глобальну адресу "з" у вашомуconfig/mail.phpфайл конфігурації. Ця адреса буде використана, якщо в межах доступного класу не вказана інша адреса "з":

'from' => ['address' => 'example@example.com', 'name' => 'App Name'],

Крім того, ви можете визначити загальну адресу "reply_to" у вашомуconfig/mail.phpфайл конфігурації:

'reply_to' => ['address' => 'example@example.com', 'name' => 'App Name'],

Налаштування View

В межах доступного класу 'buildметод, ви можете використовуватиviewметод, щоб вказати, який шаблон слід використовувати під час відтворення вмісту електронного листа. Оскільки в кожному електронному листі зазвичай використовується файлBlade шаблонщоб відтворити його вміст, ви маєте повну потужність та зручність механізму шаблонізації Blade під час створення HTML-коду електронної пошти:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->view('emails.orders.shipped');
}
Ви можете створити файлresources/views/emailsкаталог для розміщення всіх ваших шаблонів електронної пошти; однак ви можете вільно розміщувати їх там, де забажаєтеresources/viewsкаталог.

Звичайні текстові електронні листи

Якщо ви хочете визначити текстову версію електронної пошти, ви можете використовуватиtextметод. Подобаєтьсяviewметод,textметод приймає ім'я шаблону, яке буде використано для візуалізації вмісту електронного листа. Ви можете визначити як HTML, так і текстову версію свого повідомлення:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->view('emails.orders.shipped')
                ->text('emails.orders.shipped_plain');
}

Переглянути дані

Через публічну власність

Як правило, вам доведеться передати у свій View деякі дані, які ви можете використовувати при отрисуванні HTML-коду електронного листа. Є два способи зробити дані доступними для вашого перегляду. По-перше, будь-яка загальнодоступна властивість, визначена у вашому доступному класі, буде автоматично доступною для перегляду. Так, наприклад, ви можете передати дані в конструктор вашого доступного класу і встановити ці дані на загальнодоступні властивості, визначені в класі:

<?php

namespace App\Mail;

use App\Models\Order;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class OrderShipped extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * The order instance.
     *
     * @var Order
     */
    public $order;

    /**
     * Create a new message instance.
     *
     * @param  \App\Models\Order  $order
     * @return void
     */
    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.orders.shipped');
    }
}

Як тільки дані будуть встановлені як загальнодоступне, вони будуть автоматично доступні у вашому поданні, тому ви зможете отримати до них доступ, як і до будь-яких інших даних у ваших шаблонах Blade:

<div>
    Price: {{ $order->price }}
</div>

ЧерезwithМетод:

Якщо ви хочете налаштувати формат даних електронної пошти перед тим, як їх надсилати до шаблону, ви можете вручну передати свої дані у View за допомогоюwithметод. Зазвичай ви все одно передаєте дані через конструктор доступного класу '; однак вам слід встановити для цих даних значенняprotectedабоprivateвластивості, тому дані автоматично не стають доступними для шаблону. Потім, при викликуwithметод, передайте масив даних, які ви хочете зробити доступними для шаблону:

<?php

namespace App\Mail;

use App\Models\Order;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class OrderShipped extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * The order instance.
     *
     * @var \App\Models\Order
     */
    protected $order;

    /**
     * Create a new message instance.
     *
     * @param  \App\Models\Order $order
     * @return void
     */
    public function __construct(Order $order)
    {
        $this->order = $order;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.orders.shipped')
                    ->with([
                        'orderName' => $this->order->name,
                        'orderPrice' => $this->order->price,
                    ]);
    }
}

Після передачі даних доwithметод, він буде автоматично доступний у вашому поданні, тому ви можете отримати доступ до нього, як і до будь-яких інших даних у своїх шаблонах Blade:

<div>
    Price: {{ $orderPrice }}
</div>

Вкладення

Щоб додати вкладення до електронного листа, використовуйтеattachметод у доступному класі 'buildметод.attachметод приймає повний шлях до файлу як перший аргумент:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->view('emails.orders.shipped')
                ->attach('/path/to/file');
}

Прикріплюючи файли до повідомлення, ви також можете вказати відображуване ім'я та / або тип MIME, передавши файлarrayяк другий аргументattachметод:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->view('emails.orders.shipped')
                ->attach('/path/to/file', [
                    'as' => 'name.pdf',
                    'mime' => 'application/pdf',
                ]);
}

Вкладання файлів з диска

Якщо ви зберегли файл на одному зі своїхдиски файлової системи, ви можете прикріпити його до електронного листа за допомогоюattachFromStorageметод:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
   return $this->view('emails.orders.shipped')
               ->attachFromStorage('/path/to/file');
}

Якщо потрібно, ви можете вказати ім'я вкладення файлу та додаткові параметри, використовуючи другий та третій аргументи доattachFromStorageметод:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
   return $this->view('emails.orders.shipped')
               ->attachFromStorage('/path/to/file', 'name.pdf', [
                   'mime' => 'application/pdf'
               ]);
}

attachFromStorageDiskметод може бути використаний, якщо вам потрібно вказати диск зберігання, відмінний від диска за замовчуванням:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
   return $this->view('emails.orders.shipped')
               ->attachFromStorageDisk('s3', '/path/to/file');
}

Вкладені файли необроблених даних

attachDataметод може бути використаний для приєднання необробленого рядка байтів як вкладення. Наприклад, ви можете скористатися цим методом, якщо створили PDF в пам'яті і хочете приєднати його до електронного листа, не записуючи на диск.attachDataметод приймає необроблені байти даних як перший аргумент, ім'я файлу як другий аргумент і масив параметрів як третій аргумент:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->view('emails.orders.shipped')
                ->attachData($this->pdf, 'name.pdf', [
                    'mime' => 'application/pdf',
                ]);
}

Вбудовані вкладення

Вбудовувати вбудовані зображення в електронні листи, як правило, громіздко; однак Laravel пропонує зручний спосіб приєднати зображення до електронних листів та отримати відповідний CID. Щоб вставити вбудоване зображення, використовуйтеembedметод на$messageзмінної в шаблоні електронної пошти. Laravel автоматично робить$messageдоступна для всіх ваших шаблонів електронної пошти, тому вам не потрібно турбуватися про передачу її вручну:

<body>
    Here is an image:

    <img src="{{ $message->embed($pathToImage) }}">
</body>
$messageЗмінна недоступна у текстових повідомленнях, оскільки текстові повідомлення не використовують вбудовані вкладення.

Вбудовування вкладень необроблених даних

Якщо у вас вже є необроблений рядок даних, який ви хочете вбудувати в шаблон електронної пошти, ви можете використовуватиembedDataметод на$messageзмінна:

<body>
    Here is an image from raw data:

    <img src="{{ $message->embedData($data, $name) }}">
</body>

Налаштування повідомлення SwiftMailer

withSwiftMessageметодMailableбазовий клас дозволяє зареєструвати зворотний виклик, який буде викликаний із необробленим екземпляром повідомлення SwiftMailer перед відправкою повідомлення. Це дає вам можливість налаштувати повідомлення перед його доставкою:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    $this->view('emails.orders.shipped');

    $this->withSwiftMessage(function ($message) {
        $message->getHeaders()
                ->addTextHeader('Custom-Header', 'HeaderValue');
    });
}

Націнка доступна

Повідомлення, доступні для розмітки, дозволяють вам скористатися заздалегідь побудованими шаблонами та компонентами сповіщень про пошту у ваших доступних повідомленнях. Оскільки повідомлення написані в Markdown, Laravel може рендерити чудові, гнучкі HTML-шаблони для повідомлень, а також автоматично генерувати аналог у звичайному тексті.

Генерування доступності націнки

Щоб створити доступний за допомогою відповідного шаблону Markdown, ви можете використовувати--markdownваріантmake:mailКоманда ремісників:

php artisan make:mail OrderShipped --markdown=emails.orders.shipped

Потім, при налаштуванні доступного в межахbuildметод, викличтеmarkdownметод замістьviewметод.markdownметод приймає ім'я шаблону Markdown та необов'язковий масив даних, щоб зробити шаблон доступним:

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->from('example@example.com')
                ->markdown('emails.orders.shipped');
}

Написання повідомлень про націнку

Доступні в Markdown комбінації компонентів Blade та синтаксису Markdown дозволяють легко створювати поштові повідомлення, використовуючи заздалегідь створені компоненти Laravel:

@component('mail::message')
# Order Shipped

Your order has been shipped!

@component('mail::button', ['url' => $url])
View Order
@endcomponent

Thanks,<br>
{{ config('app.name') }}
@endcomponent
Не використовуйте надмірні відступи під час написання електронних листів Markdown. Аналізатори розмітки відображатимуть відступ із вмістом як блоки коду.

Кнопка Компонент

Компонент кнопки відображає відцентрове посилання кнопки. Компонент приймає два аргументи, aurlта необов’язковоcolor. Підтримувані кольориprimary,success, іerror. Ви можете додати до повідомлення скільки завгодно компонентів кнопок:

@component('mail::button', ['url' => $url, 'color' => 'success'])
View Order
@endcomponent

Компонент панелі

Компонент панелі відображає даний блок тексту на панелі, яка має дещо інший колір тла, ніж решта повідомлення. Це дозволяє звернути увагу на певний блок тексту:

@component('mail::panel')
This is the panel content.
@endcomponent

Компонент таблиці

Компонент таблиці дозволяє перетворити таблицю Markdown в таблицю HTML. Компонент приймає таблицю Markdown як свій вміст. Вирівнювання стовпців таблиці підтримується за допомогою синтаксису вирівнювання таблиці Markdown за замовчуванням:

@component('mail::table')
| Laravel       | Table         | Example  |
| ------------- |:-------------:| --------:|
| Col 2 is      | Centered      | $10      |
| Col 3 is      | Right-Aligned | $20      |
@endcomponent

Налаштування компонентів

Ви можете експортувати всі компоненти пошти Markdown у власну програму для налаштування. Щоб експортувати компоненти, використовуйтеvendor:publishРеміснича команда видаватиlaravel-mailтег активу:

php artisan vendor:publish --tag=laravel-mail

Ця команда опублікує компоненти пошти Markdown уresources/views/vendor/mailкаталог.mailкаталог міститимеhtmlі atextкаталог, кожен із відповідних Views кожного доступного компонента. Ви можете налаштувати ці компоненти як завгодно.

Налаштування CSS

Після експорту компонентів файлresources/views/vendor/mail/html/themesкаталог міститиме файлdefault.cssфайл. Ви можете налаштувати CSS у цьому файлі, і ваші стилі будуть автоматично вставлені в HTML-зображення ваших повідомлень електронної пошти Markdown.

Якщо ви хочете створити абсолютно нову тему для компонентів Laravel Markdown, ви можете розмістити файл CSS уhtml/themesкаталог. Після іменування та збереження файлу CSS оновіть файлthemeваріантmailфайл конфігурації відповідно до назви вашої нової теми.

Щоб налаштувати тему для окремого доступного користувача, ви можете встановити$themeвластивість класу "доступний" на ім'я теми, яку слід використовувати під час надсилання цієї книги.

Відправлення пошти

Щоб надіслати повідомлення, використовуйтеtoметод наMailфасад.toметод приймає електронну адресу, екземпляр користувача або колекцію користувачів. Якщо ви передасте об'єкт або колекцію об'єктів, поштовий скринька автоматично використовуватиме їхemailіnameвластивості при встановленні одержувачів електронної пошти, тому переконайтесь, що ці атрибути доступні для ваших об’єктів. Після того, як ви вказали своїх одержувачів, ви можете передати екземпляр вашого доступного класу доsendметод:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\Mail\OrderShipped;
use App\Models\Order;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;

class OrderController extends Controller
{
    /**
     * Ship the given order.
     *
     * @param  Request  $request
     * @param  int  $orderId
     * @return Response
     */
    public function ship(Request $request, $orderId)
    {
        $order = Order::findOrFail($orderId);

        // Ship order...

        Mail::to($request->user())->send(new OrderShipped($order));
    }
}

Ви не обмежуєтеся просто вказівкою одержувачів "до" під час надсилання повідомлення. Ви можете встановити одержувачів "на", "куб. Сс" та "приховану копію" у межах одного виклику методом ланцюжка:

use Illuminate\Support\Facades\Mail;

Mail::to($request->user())
    ->cc($moreUsers)
    ->bcc($evenMoreUsers)
    ->send(new OrderShipped($order));

Зациклювання над одержувачами

Іноді вам може знадобитися надіслати доступ до списку одержувачів, перебираючи масив одержувачів / адрес електронної пошти. Так якtoМетод додає адреси електронної пошти до списку одержувачів, доступних для доступу, вам слід завжди створювати доступний екземпляр для кожного одержувача:

foreach (['taylor@example.com', 'dries@example.com'] as $recipient) {
    Mail::to($recipient)->send(new OrderShipped($order));
}

Відправлення пошти за допомогою певної пошти

За замовчуванням Laravel використовуватиме поштову скриньку, налаштовану якdefaultпошти у вашомуmailфайл конфігурації. Однак ви можете використовуватиmailerспосіб відправити повідомлення за допомогою певної конфігурації поштової скриньки:

Mail::mailer('postmark')
        ->to($request->user())
        ->send(new OrderShipped($order));

Пошта в черзі

Черга поштового повідомлення

Оскільки надсилання повідомлень електронної пошти може суттєво подовжити час відгуку вашої програми, багато розробників вирішують поставити повідомлення електронної пошти в чергу для фонової відправки. Laravel полегшує це використання за допомогою вбудованогоAPI уніфікованої черги. Щоб поставити поштове повідомлення в чергу, використовуйтеqueueметод наMailфасаду після вказівки одержувачів повідомлення:

Mail::to($request->user())
    ->cc($moreUsers)
    ->bcc($evenMoreUsers)
    ->queue(new OrderShipped($order));

Цей метод автоматично подбає про перенесення завдання в чергу, тому повідомлення надсилається у фоновому режимі. Вам потрібно буденалаштувати чергиперед використанням цієї функції.

Затримка черг повідомлень

Якщо ви хочете затримати доставку повідомлення електронної пошти, яке знаходиться в черзі, ви можете використовуватиlaterметод. Першим аргументом єlaterметод приймає aDateTimeекземпляр, який вказує, коли повідомлення має бути надіслано:

$when = now()->addMinutes(10);

Mail::to($request->user())
    ->cc($moreUsers)
    ->bcc($evenMoreUsers)
    ->later($when, new OrderShipped($order));

Перехід до певних черг

Оскільки всі доступні класи, створені за допомогоюmake:mailкоманда використовуєIlluminate\Bus\Queueableриса, ви можете зателефонувати доonQueueіonConnectionметодів на будь-якому доступному екземплярі класу, що дозволяє вказати підключення та назву черги для повідомлення:

$message = (new OrderShipped($order))
                ->onConnection('sqs')
                ->onQueue('emails');

Mail::to($request->user())
    ->cc($moreUsers)
    ->bcc($evenMoreUsers)
    ->queue($message);

Черга за замовчуванням

Якщо у вас є доступні класи, які ви хочете завжди залишати в черзі, ви можете застосуватиShouldQueueконтракт на клас. Тепер, навіть якщо ви телефонуєте наsendметод під час розсилки, доступний все ще буде в черзі, оскільки він реалізує контракт:

use Illuminate\Contracts\Queue\ShouldQueue;

class OrderShipped extends Mailable implements ShouldQueue
{
    //
}

Візуалізація доступних

Іноді вам може знадобитися захопити HTML-вміст доступного користувача, не надсилаючи його. Для цього ви можете зателефонувати доrenderспосіб доступності. Цей метод поверне обчислюваний вміст доступного у вигляді рядка:

$invoice = App\Models\Invoice::find(1);

return (new App\Mail\InvoicePaid($invoice))->render();

Попередній перегляд Mailables у браузері

Під час проектування шаблону, що доступний, зручно швидко переглядати візуалізований файл, доступний у вашому браузері, як типовий шаблон Blade. З цієї причини Laravel дозволяє повернути будь-який доступний безпосередньо з Закриття маршруту або контролера. Після повернення файлу, який доступний, він буде відтворений і відображений у браузері, що дозволить вам швидко переглянути його дизайн без необхідності відправляти його на фактичну електронну адресу:

Route::get('mailable', function () {
    $invoice = App\Models\Invoice::find(1);

    return new App\Mail\InvoicePaid($invoice);
});
Вбудовані вкладенняне відображатиметься, коли у вашому браузері здійснюється попередній перегляд Mailables. Щоб переглянути ці доступні файли, вам слід надіслати їх до програми тестування електронної пошти, наприкладMailHogабоПривіт.

Локалізація доступних

Laravel дозволяє надсилати доступні матеріали мовою, відмінною від поточної мови, і навіть запам’ятає цю локаль, якщо пошта буде в черзі.

Для цього,MailFacadeпропонує alocaleспосіб встановити потрібну мову. Програма зміниться на цю локаль після форматування доступної версії, а потім повернеться до попередньої локалі після завершення форматування:

Mail::to($request->user())->locale('es')->send(
    new OrderShipped($order)
);

Локалі, що надаються користувачем

Іноді програми зберігають улюблений регіон кожного користувача. ВпроваджуючиHasLocalePreferenceуклавши контракт на одну або кілька ваших моделей, ви можете доручити Laravel використовувати цю збережену локаль під час надсилання пошти:

use Illuminate\Contracts\Translation\HasLocalePreference;

class User extends Model implements HasLocalePreference
{
    /**
     * Get the user's preferred locale.
     *
     * @return string
     */
    public function preferredLocale()
    {
        return $this->locale;
    }
}

Після того, як ви впровадите інтерфейс, Laravel автоматично використовуватиме бажану локаль під час надсилання доступних моделей та повідомлень до моделі. Тому немає необхідності телефонувати доlocaleметод при використанні цього інтерфейсу:

Mail::to($request->user())->send(new OrderShipped($order));

Пошта та місцевий розвиток

Розробляючи програму, яка надсилає електронну пошту, ви, мабуть, не хочете фактично надсилати електронні листи на електронні адреси, що працюють. Laravel пропонує декілька способів "відключити" фактичне надсилання електронних листів під час локальної розробки.

Драйвер журналу

Замість того, щоб надсилати електронні листи,logпоштовий драйвер запише всі повідомлення електронної пошти у ваші журнали для перевірки. Щоб отримати докладнішу інформацію про налаштування програми для кожного середовища, перегляньтеконфігураційна документація.

Універсальний

Іншим рішенням, яке надає Laravel, є встановлення універсального одержувача всіх електронних листів, надісланих фреймворком. Таким чином, усі електронні листи, створені вашим додатком, будуть надіслані на певну адресу, а не на адресу, фактично вказану під час надсилання повідомлення. Це можна зробити за допомогоюtoваріант у вашомуconfig/mail.phpфайл конфігурації:

'to' => [
    'address' => 'example@example.com',
    'name' => 'Example'
],

Поштова пастка

Нарешті, ви можете скористатися такою послугою, якПоштова пасткатаsmtpдрайвер для надсилання ваших повідомлень електронної пошти на "фіктивну" поштову скриньку, де ви можете переглянути їх у справжньому поштовому клієнті. Цей підхід має перевагу, дозволяючи вам фактично перевіряти остаточні електронні листи в засобі перегляду повідомлень Mailtrap.

Події

Laravel запускає дві події в процесі надсилання поштових повідомлень.MessageSendingподія запускається до надсилання повідомлення, тоді якMessageSentподія запускається після відправлення повідомлення. Пам’ятайте, ці події запускаються, коли відбувається пошта_надісланий_, а не тоді, коли воно в черзі. Ви можете зареєструвати слухач події для цієї події у своємуEventServiceProvider:

/**
 * The event listener mappings for the application.
 *
 * @var array
 */
protected $listen = [
    'Illuminate\Mail\Events\MessageSending' => [
        'App\Listeners\LogSendingMessage',
    ],
    'Illuminate\Mail\Events\MessageSent' => [
        'App\Listeners\LogSentMessage',
    ],
];