Laravel: как отправлять электронные письма с помощью sendmail

Я использую Laravel 7 и хочу отправить электронное письмо с помощью драйвера sendemail с помощью Laravel Mail Facade, потому что он работал, когда я использовал почтовую функцию php, но я хочу использовать Laravel Mail Facade.

Это моя конфигурация электронной почты из файла .env

MAIL_DRIVER=sendmail
MAIL_SENDMAIL='/usr/sbin/sendmail -t -i'

И это моя почта по умолчанию в config / mail.php

'default' => env('MAIL_MAILER', 'sendmail'),
'mailers' => [
    'smtp' => [
        'transport' => 'smtp',
        'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
        'port' => env('MAIL_PORT', 587),
        'encryption' => env('MAIL_ENCRYPTION', 'tls'),
        'username' => env('MAIL_USERNAME'),
        'password' => env('MAIL_PASSWORD'),
    ],
    'ses' => [
        'transport' => 'ses',
    ],
    'sendmail' => [
        'transport' => 'sendmail',
        'path' => '/usr/sbin/sendmail -bs',
    ],
    'log' => [
        'transport' => 'log',
        'channel' => env('MAIL_LOG_CHANNEL'),
    ],
    'array' => [
        'transport' => 'array',
    ],
],

Какая правильная конфигурация, как заставить ее работать?


person Amir    schedule 04.07.2020    source источник


Ответы (2)


проверьте Как отправлять электронную почту с Laravel, используя sendmail? и вы получите полное представление.

person Senthur    schedule 04.07.2020
comment
Я добавил MAIL_HOST и MAIL_PORT, но почта по-прежнему не отправляется - person Amir; 05.07.2020
comment
не могли бы вы дать свою конфигурацию .env, относящуюся к почте? Желательно добавить к вопросу. - person Senthur; 05.07.2020
comment
Я обновил конфигурацию электронной почты в вопросе - person Amir; 05.07.2020
comment
Что такое www.alrahden.com? это твой сайт? Если вы не хотите использовать хост в качестве своего сайта. Если вы отправляете почту через Gmail, установите его, как в моей ссылке выше. - person Senthur; 05.07.2020
comment
да, это сайт. Я хочу использовать sendmail, который установлен на общем хостинге для сайта - person Amir; 05.07.2020
comment
каким бы способом вы ни делали свой хостинг, это не проблема, если вы хотите отправлять почту, тогда вы хотите использовать почтовый движок, такой как gmail, и что-то вроде. так что вы измените мышление, как в ссылке, это будет работать. - person Senthur; 05.07.2020
comment
ну, я не хочу использовать службу gmail, я думал, что sendmail отправляет почту без необходимости в других провайдерах. Я попробую с адресом электронной почты домена проверить, будет ли он работать с их адресом электронной почты, потому что он будет отображаться как отправитель, - person Amir; 05.07.2020

Из вашего вопроса я не могу точно понять, как далеко вы продвинулись в процессе, поэтому я попытаюсь вам это объяснить.

Вам необходимо создать электронное письмо с помощью Artisan:

php artisan make:mail MailName

Письма в Laravel - это в основном просто представления, поэтому в функции build() вашей почты ссылайтесь на представление следующим образом:

$this->view('folder.view');

Вам необходимо настроить адрес электронной почты, с которого отправляется электронное письмо, вы можете сделать это в файле Mail:

$this->from('[email protected]');

Или вы можете установить его глобально в вашем mail.php файле:

'from' => ['address' => '[email protected]', 'name' => 'App Name'],

Чтобы отправить письмо, используйте строку ниже:

use Illuminate\Support\Facades\Mail; // Put this at the top of your controller

Mail::to($recipient)->send(new MailName);

Если вы используете переменные в своем представлении, вам нужно передать их, вы можете сделать это так:

use Illuminate\Support\Facades\Mail; // Put this at the top of your controller
    
Mail::to($recipient)->send(new MailName($variables));

Для получения другой информации, такой как CC, вложения и т. Д., См. документы.

person rpm192    schedule 04.07.2020
comment
спасибо за объяснение процесса, и я могу заверить вас, что я прочитал документы и сделал их все. вот почему я думаю, что моя ошибка в настройке почты. Но я еще не могу знать, что не так - person Amir; 04.07.2020