Невозможно использовать SMTP-сервер Gmail для отправки аутентификации электронной почты

Я пытаюсь отправить подтверждение электронной почты пользователя. Я обновил конфигурацию env и mail в соответствии с моей Google Mail. Однако я сталкиваюсь с ошибкой Swift_TransportException (530).

.env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=

mail.php

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.gmail.com'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
        'name' => env('MAIL_FROM_NAME', 'Kyle Jeynes'),
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('okaydots@gmail'),
    'password' => env(''),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend'  => false,
    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
    'log_channel' => env('MAIL_LOG_CHANNEL'),
];

User.php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;

    protected $fillable = [
        'name', 'email', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
}

web.php

Route::get('/', function () {
    return view('welcome');
});

Auth::routes(['verify' => true]);

Route::get('/home', 'HomeController@index')->name('home');

HomeController.php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
        $this->middleware('verified');
    }

    public function index()
    {
        return view('home');
    }
}

Это точное сообщение об ошибке, которое я получаю:

Expected response code 250 but got code "530", with message "530-5.5.1 Authentication Required. Learn more at 530 5.5.1 https://support.google.com/mail/?p=WantAuthError 133sm47765wme.9 - gsmtp "

После того, как я погуглил эту ошибку, мне сказали Включите менее безопасные приложения. После этого я все еще получаю ту же ошибку. Как я могу разрешить Laravel отправлять подтверждение по электронной почте / электронные письма?

Вы имеете в виду SMTP?

RiggsFolly 11.12.2018 15:38

Ошибка указывает на то, что вам нужен пароль.

RiggsFolly 11.12.2018 15:40

Включена ли у вас двухсторонняя аутентификация для этой учетной записи? Затем вам нужно создать пароль приложения.

M. Eriksson 11.12.2018 15:40

Как я могу создать пароль приложения? Я думаю, что проблема в том, что я использую свой пароль для входа в Gmail atm @MagnusEriksson

Jaquarh 11.12.2018 15:41

Да, я имею в виду SMTP - я его там накосил, не стесняйтесь обновлять Q @RiggsFolly

Jaquarh 11.12.2018 15:41
Также доступен в Google
RiggsFolly 11.12.2018 15:43

Вам нужно только создать пароль приложения, если вы делать используете двухфакторную аутентификацию. Поэтому, если вы не используете двухфакторную аутентификацию, вы не можете (и не должны) создавать пароль приложения. Если вы все-таки используете его, то вам нужно погуглить, как сгенерировать пропуск приложения.

M. Eriksson 11.12.2018 15:44

Это что я гуглил @RiggsFolly

Jaquarh 11.12.2018 15:44

Вы продолжаете ссылаться на страницы, для просмотра которых вам нужно войти в Google. Это не очень помогает

RiggsFolly 11.12.2018 15:45

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

RiggsFolly 11.12.2018 15:46

Между тем, ссылка в сообщении об ошибке содержит ссылки на создание паролей приложений, поэтому вам даже не нужно для этого гуглить.

M. Eriksson 11.12.2018 15:46

Спасибо за помощь @MagnusEriksson после того, как понял, что это ошибка аутентификации, хотя мой пароль был правильным, и я не использовал двухэтапную аутентификацию, я исследовал, что делает env(), в результате чего я решил эту проблему

Jaquarh 11.12.2018 15:58

@RiggsFolly, это даже не проблема аутентификации, да, он содержит ссылки на проблему и самоочевидно, но это была проблема с кодом, я перезаписывал env () неправильными данными, мне пришлось откатить свой mail.php файл и измените конфигурацию только в моем файле .env, возможно, не спешите и предполагайте, что люди еще не пытались Google решить проблему и проверить правильность учетных данных

Jaquarh 11.12.2018 21:53

Пожалуйста, прочтите второй комментарий. Я больше ничего не говорю.

RiggsFolly 11.12.2018 23:56

Пароль был в порядке, я удалил его из OP, поэтому никто не входил в мой gmail lol, ошибка предоставила мне URL-адрес, объясняющий, что у меня неправильные учетные данные, ИЛИ мне нужно было включить менее безопасные приложения, однако оба - в этом случае - не решить проблему, поэтому я разместил здесь. Оказывается, мой файл mail.php использует конфигурацию env, и я переопределил ее, он искал поле [email protected] и, таким образом, возвращал null, вызывая ошибки аутентификации, я не понимаю, почему вопрос дает право на голосование против общего проблема, для которой я дал MCVE, и не было необходимости пытаться опекать меня из-за этого @RiggsFolly

Jaquarh 12.12.2018 00:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
15
314
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

После интенсивного поиска в Google я обнаружил, что mail.php содержит метод конфигурации env(), и поэтому ожидает, что arg 1 будет именем конфигурации внутри файла .env.

Я поменял свой mail.php на этот, и теперь он работает:

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.gmail.com'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
        'name' => env('MAIL_FROM_NAME', 'Kyle Jeynes'),
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'), # Changed
    'password' => env('MAIL_PASSWORD'), # Changed
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend'  => false,
    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
    'log_channel' => env('MAIL_LOG_CHANNEL'),
];
Ответ принят как подходящий

Верните свой mail.php обратно. Вам нужно только сменить .env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=     #use gmail app password not your gmail password
MAIL_ENCRYPTION=tls

Другие вопросы по теме