Отправить почту с помощью Lumen - PullRequest
0 голосов
/ 21 февраля 2019

Mail.php

return [
 'driver' =>'smtp',
 'host' => 'smtp.gmail.com',
 //'port' => 587,
 'port' =>465,
 //'encryption' =>'tls',
 'encryption' =>'ssl',
 'username' => 'xxxxxxxx@gmail.com',
 'password' => 'xxxxxxx',
 // 'sendmail' => '/usr/sbin/sendmail -bs',
 'sendmail' => '/usr/sbin/sendmail -t',
 'markdown' => [
        'theme' => 'default',
        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
];

Контроллер

$data = []; // Empty array

        Mail::send('email.credentials', $data, function($message)
        {
            $message->to('xxxxxx@gmail.com', 'Jon Doe')->subject('Welcome!');
        });

Ошибка

Swift_TransportException Невозможно установить соединение с хостом smtp.gmail.com [Попытка соединения не удалась, потому что подключенная сторона не ответила должным образом через некоторое время, или не удалось установить соединение, потому что подключенный хост не смог ответить.

Я попробовал ...

  • Изменить SSL / TLS

  • Изменить порты

  • Добавить "guzzlehttp/guzzle": "~5.3|~6.0" в composer.json

  • Добавить новую строку в StreamBuffer.php

    $ options = array_merge ($ options, array('ssl' => array ('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true)));

Пожалуйста, помогите.

Спасибо.

1 Ответ

0 голосов
/ 21 февраля 2019

1.Требуется подсветка / mail

Убедитесь, что вы используете ту же версию, что и базовый фреймворк (т. Е. Если вы используете Lumen v. 5.3, используйте composer Требуется подсветка / почта "5.3. *").

composer require illuminate/mail "5.5.*"

2.Настройте Lumen bootstrap / app.php

Сначала откройте файл bootstrap.php и раскомментируйте следующие строки:

$app->withFacades();
$app->register(App\Providers\AppServiceProvider::class);

Кроме того, добавьте следующую строку ниже последней строки, которую выuncommented:

$app->configure('services');

Это позволит вам определить файл конфигурации 'services' и настроить вашу почтовую службу.Теперь я знаю, что обычно конфигурация выполняется в файле .env с помощью Lumen, и мы вскоре воспользуемся этим, но сначала нам нужно написать небольшой файл конфигурации для сопоставления с файлом .env.

3.Создайте свои файлы конфигурации

Создайте новую папку на корневом уровне вашей установки под названием config (если она еще не существует).В папке config создайте два новых файла, один с именем services.php, а другой с именем **mail.php**.

. В файле services.php вставьте следующее:

<?php
return [
    'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN'),
        'secret' => env('MAILGUN_SECRET'),
    ],
];

Наконец, добавьте в свой файл .env следующее:

MAIL_DRIVER=mailgun
MAILGUN_DOMAIN=<your-mailgun-domain>
MAILGUN_SECRET=<your-mailgun-api-key>

Убедитесь, что вы заменили эти хитрые заполнители на свой фактический ключ и домен.Если вы не используете Mailgun, вы всегда можете использовать других почтовых провайдеров, с которыми поставляется Mail;Посмотрите документы, если вы планируете использовать другого провайдера, их легко настроить, как только вы окажетесь на этом этапе.

4.Отправка электронной почты!

Чтобы отправить электронное письмо, используйте одно из следующих занятий в ваших классах (в зависимости от ваших предпочтений):

use Illuminate\Support\Facades\Mail;

$ data = [];// Пустой массив

    Mail::send('email.credentials', $data, function($message)
    {
        $message->to('xxxxxx@gmail.com', 'Jon Doe')->subject('Welcome!');
    });

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

...