Intereting Posts
Рекомендации для статических конструкторов Как я могу получить имя изображения из URL-адреса? Laravel 5.1: htmlentities () ожидает, что параметр 1 будет строкой, заданный массив Косинус сходство против расстояния Хэмминга Есть ли лучший способ PHP для получения значения по умолчанию из массива (словарь)? Эффективное тестирование нескольких значений в PHP Как добавить несколько маркеров в google map Невозможность обновления Laravel 5.1 до 5.2 (это противоречит вашим требованиям или минимальной стабильности) Backbone + RequireJS: файлы HTML, загруженные RequireJS, интерпретируются как файлы JS Есть ли способ получить данные сеанса в папке вне папки приложения Codeigniter? Кодирование / экранирование управляющих символов JSON Как включить короткие коды в шаблон электронной почты php Использование настроек часового пояса системы в PHP Как загрузить классы из нескольких каталогов с помощью __autoload? Тег HTML5 для отображения подсветки синтаксиса

Попытка получить письмо Laravel 5 на работу

Я пытаюсь отправить электронное письмо указанному пользователю, введя URL-адрес, но я получаю следующую ошибку:

Swift_TransportException в строке AbstractSmtpTransport.php 383: ожидаемый код ответа 250, но получил код «530», с сообщением «530 5.7.1 Требуется аутентификация

Пока я просто пытаюсь заставить его работать с Gmail. Как я могу заставить это работать?

Это то, что у меня есть до сих пор: mail.php

<?php return [ 'driver' => env('MAIL_DRIVER',' smtp'), 'host' => env('MAIL_HOST', 'smtp.gmail.com'), 'port' => env('MAIL_PORT', 587), 'from' => ['address' =>"MyUsername@gmail.com" , 'name' => "example"], 'encryption' => 'tls', 'username' => env('MyUsername@gmail.com'), 'password' => env('MyPassword'), 'sendmail' => '/usr/sbin/sendmail -bs', 'pretend' => false, ]; 

Это то, что у меня есть на маршрутах:

 Route::get('test', function() { Mail::send('Email.test', [], function ($message) { $message->to('example@gmail.com', 'HisName')->subject('Welcome!'); }); }); 

Это то, что я имею в своем контроллере:

 class MailController extends Controller{ public function Sending_Email() { $this->call('GET','Email.test'); return View('Email.test'); } } 

И это то, что находится в моем файле .env:

 MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=MyUsername@gmail.com MAIL_PASSWORD=MyPassword 

Я знаю, что это работает для вас сейчас @ Vantheman6, но это то, что сработало для меня, если это одно и то же для кого-то другого.

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

 MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=MyUsername@gmail.com MAIL_PASSWORD=MyPassword 

в файле .env являются точными.

ПРИМЕЧАНИЕ. Не забудьте перезапустить сервер после редактирования .env-файла, чтобы он отобрал новые данные, которые вы там разместили.

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

Конфигурация моего .env файла похожа на laravel 5.1

 MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=example@gmail.com MAIL_PASSWORD=**************** MAIL_ENCRYPTION=tls 

здесь самое главное, что я создал специальный пароль для приложения gmail (16 цифр).

Мне нужно показать еще одну вещь, так как не повезло ни на какую конфигурацию. То есть, всякий раз, когда я менял файл .env, нужно выполнить эту команду

 php artisan config:cache 

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

Вы получаете ошибку проверки подлинности, потому что имя пользователя и пароль в вашем файле конфигурации настроены неправильно.

Измените это:

 'username' => env('MyUsername@gmail.com'), 'password' => env('MyPassword'), 

К этому:

 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 

Метод env проверяет ваш .env-файл. В вашем файле .env вы вызываете это MAIL_USERNAME , так что вам нужно перейти к методу env .

Один совет по устранению неполадок: добавьте dd(Config::get('mail')); так что вы можете увидеть фактическую сгенерированную конфигурацию . Это поможет вам выявить такие проблемы и точно знать, какую информацию Laravel собирается попробовать и использовать. Поэтому вы можете временно приостановить это на своем тестовом маршруте, чтобы проверить, что у вас есть:

 Route::get('test', function() { dd(Config::get('mail')); }); 

Если у вас есть такая же проблема и попробуйте все в Интернете, и это не сработает, возможно, файл конфигурации кэша отправляет неверную информацию. Вы можете найти его в bootstrap / cache / config.php. Убедитесь, что учетные данные указаны правильно. Мне потребовалась неделя, чтобы понять это. Надеюсь, это когда-нибудь поможет кому-нибудь.

Наконец я получил! Просто чтобы поделиться, есть больше конфигурации, чем просто .env

Это .env

 MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=UserName@gmail.com MAIL_PASSWORD=******** MAIL_ENCRYPTION=tls 

config / mail.php также необходимо ввести адрес и имя для его работы.

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

В целях развития https://mailtrap.io/ предоставляет все параметры, которые необходимо добавить в файл .env. Например:

 Host: mailtrap.io Port: 25 or 465 or 2525 Username: cb1d1475bc6cce Password: 7a330479c15f99 Auth: PLAIN, LOGIN and CRAM-MD5 TLS: Optional 

В противном случае для реализации вы можете получить учетные данные smtp, которые будут добавлены в .env-файл из почты (например, gmail n)

После добавления обязательно перезапустите сервер.

Это случается и со мной.

Это связано с тем, что при редактировании файла .env нам необходимо перезапустить сервер. Просто прекратите использование текущего php artisan serve и запустите его еще раз. Это будет работать точно.

Если все еще не работает, попробуйте выполнить php artisan config:cache

В будущем обратитесь к людям, которые приезжают сюда. после того, как вы запустите команду, указанную в третьем ответе здесь ( теперь я использую Laravel 5.3 ).

 php artisan config:cache 

Вы можете столкнуться с этой проблемой:

 [ReflectionException] Class view does not exist 

В этом случае вам нужно добавить его обратно вручную в список поставщиков в файле app.php. GO-TO: app->config->app.php->'providers[]' и добавьте его, например:

 Illuminate\View\ViewServiceProvider::class, 

Надежда Это помогает кому-то.

у меня была та же проблема; мой «MAIL_ENCRYPTION» был «tls» на mail.php, но он был «null» на .env-файле, поэтому я изменил «null» на «tls», и он сработал!

Это просто означает, что ваш сервер не имеет доступа к SMTP Sever.

Вы можете проверить это, выполнив

 telnet <smtpServer> <smtpPort> 

Вы должны получить ошибку Access denied.

Решение заключается только в том, чтобы использовать другой SMTP-сервер, доступ к которому может получить ваш сервер.

У меня была такая же проблема, как и вы, я просто получил ее на работу.

Во-первых, вам нужно дважды проверить правильность настроек .env. Вот мои настройки:

 MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=yourusername MAIL_PASSWORD=yourpassword MAIL_ENCRYPTION=tls 

Убедитесь, что ваш пароль не находится между кавычками :).

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

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

Надеюсь, это сработает для вас 🙂

  1. Вы идете в Mailgun
  2. Нажмите Авторизованные получатели
  3. Добавьте адрес электронной почты, на который вы хотите отправить письмо.
  4. Проверьте сообщение, отправленное по почте.
  5. Браво! .. Тебе хорошо идти.

Ни один из вышеперечисленных решений не работал для меня на локальном хосте. Я даже разрешал доступ из менее безопасных приложений, разрешал доступ через разблокировку разблокировки экрана и устанавливал проверку сверстника и проверял одноранговое имя на false для SSL.

В конце концов, я использовал SMTP-решение с открытым исходным кодом MailHog. Эти шаги заключаются в следующем:

  1. Загрузите последнюю версию MailHog для своей ОС
  2. Задайте следующие параметры в файле .env.

MAIL_DRIVER = SMTP

MAIL_HOST = 127.0.0.1

MAIL_PORT = 1025

MAIL_USERNAME = TestUser

MAIL_PASSWORD = testpwd

MAIL_ENCRYPTION = нуль

MAIL_FROM_ADDRESS=theaddress@youwant.com

  1. Запустить загруженный файл MailHog
  2. Отправить электронное письмо
  3. Проверьте отправленное электронное письмо, перейдя на localhost: 8025

проблема будет решена путем очистки кеша

 php artisan config:cache