Получение исключения при отправке электронной почты - PullRequest
0 голосов
/ 07 мая 2018

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

Ожидаемый код ответа 220, но получил код "", с сообщением ""

Шаги, которые я использовал при настройке Почты в Laravel, следующие.

Я включил двухэтапную проверку Google. Изменен файл .env со следующими переменными MAIL.

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=email@domain.com
MAIL_PASSWORD=email_password
MAIL_ENCRYPTION=tls

И, наконец, в моем файле config / mail.php я меняю настройки следующим образом.

return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => '<<your email>>', 'name' => '<<any name>>'],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];

А вот функция, которую я использую для отправки электронной почты

$mail = Mail::raw($msg, function ($message) {
   $message->to('email@domain.com');
});

Кто-нибудь может подсказать мне, что я делаю неправильно

1 Ответ

0 голосов
/ 07 мая 2018

На самом деле вам не нужно изменять config/mail.php, он использует значения из вашего .env.Эта конфигурация электронной почты в моем .env работает в моем проекте:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME=mymail@gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=ssl

Если вы используете gmail, вам необходимо получить пароль API из своей учетной записи Google.

Сначала выполните следующее:

 1. Login to your gmail Account
 2. Go to your preferences
 3. Search for Sign In And Security
 4. Sign In to google -> enable two step verification
 5. There you can generate an app password which you have to use in your `.env` file

Кроме того, обязательно очистите кеш конфигурации после изменения конфигурации .env.

Выполните следующую команду:

php artisan config:cache

В вашем контроллере вы можете использовать следующую схему для отправки электронного письма:

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

php artisan make:mail InquirySent

Класс выглядит примерно так:

class InquirySent extends Mailable
{
    use Queueable, SerializesModels;

    public $data;

    public function __construct($data)
    {
        $this->data = $data;
    }

    public function build()
    {
        return $this->view('emails.contacts.inquiry'); // this is the location where you 'style' your view for your mails
    }
}

И в вашем контроллере вы можете сделать следующее, чтобы отправить электронное письмо.

class ContactController extends Controller
{
    protected $myMail;

    public function __construct() {
        $this->myMail = env('MAIL_USERNAME');
    }

    public function sent(ContactRequest $request)
    {
        $data = $request->all();       
        // new implementation using a mailable class
        Mail::to($this->myMail)->send(new InquirySent($data));
    }
}

Как вы можете видеть, вы отправляете электронное письмо на почту, которая установлена ​​в вашем.env файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...