Я пытаюсь отправить подтверждение электронной почты пользователя. Я обновил конфигурацию 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 отправлять подтверждение по электронной почте / электронные письма?
Ошибка указывает на то, что вам нужен пароль.
Включена ли у вас двухсторонняя аутентификация для этой учетной записи? Затем вам нужно создать пароль приложения.
Как я могу создать пароль приложения? Я думаю, что проблема в том, что я использую свой пароль для входа в Gmail atm @MagnusEriksson
Да, я имею в виду SMTP - я его там накосил, не стесняйтесь обновлять Q @RiggsFolly
Вам нужно только создать пароль приложения, если вы делать используете двухфакторную аутентификацию. Поэтому, если вы не используете двухфакторную аутентификацию, вы не можете (и не должны) создавать пароль приложения. Если вы все-таки используете его, то вам нужно погуглить, как сгенерировать пропуск приложения.
Это что я гуглил @RiggsFolly
Вы продолжаете ссылаться на страницы, для просмотра которых вам нужно войти в Google. Это не очень помогает
Вы не сказали, используете ли вы на самом деле двухфакторную аутентификацию или нет в этой учетной записи.
Между тем, ссылка в сообщении об ошибке содержит ссылки на создание паролей приложений, поэтому вам даже не нужно для этого гуглить.
Спасибо за помощь @MagnusEriksson после того, как понял, что это ошибка аутентификации, хотя мой пароль был правильным, и я не использовал двухэтапную аутентификацию, я исследовал, что делает env(), в результате чего я решил эту проблему
@RiggsFolly, это даже не проблема аутентификации, да, он содержит ссылки на проблему и самоочевидно, но это была проблема с кодом, я перезаписывал env () неправильными данными, мне пришлось откатить свой mail.php файл и измените конфигурацию только в моем файле .env, возможно, не спешите и предполагайте, что люди еще не пытались Google решить проблему и проверить правильность учетных данных
Пожалуйста, прочтите второй комментарий. Я больше ничего не говорю.
Пароль был в порядке, я удалил его из OP, поэтому никто не входил в мой gmail lol, ошибка предоставила мне URL-адрес, объясняющий, что у меня неправильные учетные данные, ИЛИ мне нужно было включить менее безопасные приложения, однако оба - в этом случае - не решить проблему, поэтому я разместил здесь. Оказывается, мой файл mail.php использует конфигурацию env, и я переопределил ее, он искал поле [email protected] и, таким образом, возвращал null, вызывая ошибки аутентификации, я не понимаю, почему вопрос дает право на голосование против общего проблема, для которой я дал MCVE, и не было необходимости пытаться опекать меня из-за этого @RiggsFolly






После интенсивного поиска в 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
Вы имеете в виду SMTP?