Как в Laravel8 отправить письмо на почту через phpmail?

В Laravel 8 для отправки писем на почту можно использовать различные драйверы, включая smtp, sendmail, mailgun, mandrill и т.д. Однако, если вы хотите воспользоваться драйвером phpmail, вам понадобится настроить его в конфигурационном файле Laravel и создать класс письма.

Вот пошаговая инструкция, как отправить письмо на почту через phpmail в Laravel 8:

Шаг 1: Установите Laravel 8, если у вас его еще нет. Это можно сделать с помощью Composer командой:

composer create-project --prefer-dist laravel/laravel project-name

Шаг 2: Откройте файл .env в корневой папке вашего проекта и установите следующие параметры для отправки почты через phpmail:

MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

Шаг 3: Откройте файл config/mail.php и найдите массив mailers. Добавьте следующую конфигурацию:

'phpmail' => [
    'transport' => 'phpmail'
],

Шаг 4: Добавьте массив from в массив config, чтобы определить адрес и имя отправителя по умолчанию:

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],

Шаг 5: Создайте класс письма, который будет отправлен в директории app/Mail. Создайте новый файл TestMail.php со следующим содержимым:

namespace AppMail;

use IlluminateBusQueueable;
use IlluminateContractsQueueShouldQueue;
use IlluminateMailMailable;
use IlluminateQueueSerializesModels;

class TestMail extends Mailable
{
    use Queueable, SerializesModels;

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

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

Шаг 6: Создайте шаблон письма. Создайте новую папку emails в директории resources/views и добавьте файл test.blade.php со следующим содержимым:

<!DOCTYPE html>
<html>
<head>
    <title>Test Email</title>
</head>
<body>
    <h1>Hello!</h1>
    <p>This is a test email sent using Laravel 8 with phpmail driver.</p>
</body>
</html>

Шаг 7: В контроллере или любом другом месте вашего приложения, откуда вы хотите отправить письмо, создайте экземпляр класса TestMail и отправьте его:

use IlluminateSupportFacadesMail;
use AppMailTestMail;

...

public function sendEmail()
{
    $details = [
        'title' => 'Test Email',
        'body' => 'This is a test email sent using Laravel 8 with phpmail driver.'
    ];

    Mail::to('[email protected]')->send(new TestMail($details));

    return "Email sent successfully.";
}

Теперь вы сможете отправить письмо на почту указанную в методе to(). Письмо будет содержать шаблон, который вы создали в test.blade.php.

Это основная инструкция, как отправить письмо на почту через phpmail в Laravel 8. Вы можете настроить дополнительные параметры в .env файле для отправки через другие сервера почты или используя другие драйверы, как я упоминал ранее.