Публикации - Отправка Email в Laravel

Отправка электронной почты с помощью Laravel - Создание и использование Mail класса

После настройки smtp, можем создать Mail-класс

Далее создаем Mail-класс с помощью artisan-команды:

php artisan make:mail MyTestEmail

В папке app/Mail появится следующий файл:

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class MyTestEmail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Get the message envelope.
     *
     * @return \Illuminate\Mail\Mailables\Envelope
     */

    public function envelope()
    {
        return new Envelope(
            subject: 'My Test Email',
        );
    }
 /**
     * Get the message content definition.
     *
     * @return \Illuminate\Mail\Mailables\Content
     */

    public function content()
    {
        return new Content(
            view: 'view.name',
        );
    }

    /**
     * Get the attachments for the message.
     *
     * @return array
     */
    public function attachments()
    {
        return [];
    }
}

После создания почтового класса вы можете просмотреть его содержимое и настроить класс, используя следующие методы:

  • Envelope – Возвращает экземпляр класса Illuminate\Mail\Mailables\Envelope, который позволяет вам определить тему и получателей электронного письма.
  • Content – Возвращает экземпляр класса Illuminate\Mail\Mailables\Content, который позволяет вам определить шаблон Blade, используемый для создания содержимого сообщения электронной почты.
  • Attachments – Возвращает массив вложений, которые можно добавить в электронное письмо.

Как видно из приведенного выше кода, метод content() вернет представление. Поэтому вам нужно перейти в каталог resources/views, создать новую папку и внутри нее файл Blade.php. Когда файл создан, вы можете добавить в него контент.

// resources/views/mail/test-email.blade.php
Привет! Это сообщение с сайта!

В данном представлении можно использовать html-код, но использование CSS и JavaScript - запрещено!

Для передачи переменной в шаблон письма, можно воспользоваться методом with:

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Mail\Mailables\Content;
use Illuminate\Mail\Mailables\Envelope;
use Illuminate\Queue\SerializesModels;

class MyTestEmail extends Mailable
{
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct(private $name)
    {
        //
    }

    /**
     * Get the message envelope.
     *
     * @return \Illuminate\Mail\Mailables\Envelope
     */
    public function envelope()
    {
        return new Envelope(
            subject: 'My Test Email',
        );
    }

    /**
     * Get the message content definition.
     *
     * @return \Illuminate\Mail\Mailables\Content
     */
    public function content()
    {
        return new Content(
            view: 'mail.test-email',
            with: ['name' => $this->name],
        );
    }
}

Таким образом в шаблоне test-email.blade.php будет доступна переменная $name

// resources/views/mail/test-email.blade.php
Привет {{$name}}! Это сообщение с сайта!
Далее добавляем маршрут в файл routers/web.php, используя следующий код:
use Illuminate\Support\Facades\Route;
use App\Mail\MyTestEmail;
use Illuminate\Support\Facades\Mail;

Route::get('/testroute', function() {
    $name = "Funny Coder";

    // The email sending is done using the to method on the Mail facade
    Mail::to('testreceiver@gmail.com')->send(new MyTestEmail($name));
});

Примечание. Обычно, в реальных приложениях вызов класса Mail осуществляется в контроллере или прослушивателях.

Чтобы проверить функциональность, вы можете запустить команду:
php artisan serve
а затем в браузере вставьте URL-адрес созданного вами маршрута.

Как только вы это сделаете, если все работает правильно, электронное письмо должно быть отправлено на указанный вами адрес «кому».

Чтобы узнать, как отправить электронное письмо в формате HTML, электронное письмо с вложением или электронное письмо с несколькими получателями, прочтите документацию Laravel Laravel Mail.

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться