Próbuję wysłać wiadomość e-mail do określonego użytkownika, wpisując adres URL, ale pojawia się następujący błąd:
Swift_TransportException w linii AbstractSmtpTransport.php 383: Oczekiwano kodu odpowiedzi 250, ale otrzymano kod „530”, z komunikatem „530 5.7.1 Wymagane uwierzytelnienie
Jak dotąd próbuję tylko zmusić go do pracy z Gmailem. Jak to działa?
To, co mam do tej pory: mail.php
<?php
return [
'driver' => env('MAIL_DRIVER',' smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' =>"[email protected]" , 'name' => "example"],
'encryption' => 'tls',
'username' => env('[email protected]'),
'password' => env('MyPassword'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
Oto co mam w trasach:
Route::get('test', function() {
Mail::send('Email.test', [], function ($message) {
$message->to('[email protected]', 'HisName')->subject('Welcome!');
});
});
Oto, co mam w moim kontrolerze:
class MailController extends Controller
{
public function Sending_Email()
{
$this->call('GET','Email.test');
return View('Email.test');
}
}
A oto, co jest w moim pliku .env:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword
php
laravel
laravel-5
email-integration
Vantheman6
źródło
źródło
Odpowiedzi:
Wiem, że teraz działa dla ciebie @ Vantheman6, ale to właśnie zadziałało dla mnie na wypadek, gdyby było tak samo dla kogoś innego.
Dodałem do mojego pliku .env szczegóły usługi pocztowej, z której korzystam. Więc upewnij się, że poniższe szczegóły
w pliku .env są dokładne.
UWAGA: Nie zapomnij zrestartować serwera po edycji pliku .env, aby wybrać nowe dane, które tam umieścisz.
Jeśli nie zrestartujesz serwera, plik .env nadal będzie prezentował stare dane poczty w aplikacji, mimo że zostały wprowadzone zmiany, które mogą powodować ten błąd.
źródło
php artisan config:cache
ponowne uruchomienie serwera nie spowoduje odebrania zaktualizowanej konfiguracji. Spróbujphp artisan config:cache
jeszcze razKonfiguracja mojego pliku .env jest taka sama dla laravel 5.1
Najważniejsze jest to, że utworzyłem hasło do aplikacji Gmail (16 cyfr).
Muszę ujawnić jeszcze jedną rzecz, ponieważ nie mam szczęścia w żadnej konfiguracji. Oznacza to, że za każdym razem, gdy zmieniłem plik .env, muszę uruchomić to polecenie
I to jest najważniejsze, ponieważ bez tego polecenia laravel wykonuje poprzednie ustawienia z pamięci podręcznej. Potrzeba było ponad 10 godzin, żeby to rozgryźć.
źródło
php artisan cache:clear
gdyphp artisan config:cache
jest rozwiązany, co to dla mnie. Dziękuję Ci!php artisan config:cache
Otrzymujesz błąd uwierzytelniania, ponieważ nazwa użytkownika i hasło w pliku konfiguracyjnym są nieprawidłowe.
Zmień to:
Do tego:
env
Metoda sprawdza .env pliku. W swoim pliku .env wywołujesz jeMAIL_USERNAME
, więc to właśnie musisz przekazać doenv
metody.Jedna wskazówka dotycząca rozwiązywania problemów: dodaj
dd(Config::get('mail'));
, aby zobaczyć faktycznie wygenerowaną konfigurację . Pomoże Ci to wykryć takie problemy i dokładnie wiedzieć, jakie informacje zamierza wykorzystać Laravel. Więc możesz tymczasowo zatrzymać to na swojej trasie testowej, aby sprawdzić, co masz:źródło
'password' => env('MAIL_PASSWORD'),
co uważam za interesujące, ponieważ wszędzie każe mi wprowadzić swój adres e-mail i hasło. Nadal otrzymuję błądSwift_TransportException in AbstractSmtpTransport.php line 383: Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required. I'm sorry but where do i actually place the "
dd(Config::get('mail'));
. katalog Config zawiera dużo plików'host' => env('MAIL_HOST', 'smtp.gmail.com'),
MAIL_HOST
w swoim plikuMAIL_HOST=smtp.gmail.com
Skończyło się na usunięciu całego pliku env z każdej części pliku mail.php. A teraz przechodzą prawidłowe informacje. OMG Dziękuję, że zadziałało. Jesteś mężczyznąproblem zostanie rozwiązany poprzez wyczyszczenie pamięci podręcznej
źródło
Wreszcie dotarłem! Po prostu udostępnianie, jest więcej konfiguracji niż tylko .env
To jest .env
config / mail.php musi również wprowadzić adres i nazwę, aby działał.
źródło
Jeśli kiedykolwiek będziesz miał te same problemy i spróbujesz wszystkiego online, ale to nie zadziała, prawdopodobnie jest to plik pamięci podręcznej konfiguracji, który wysyła nieprawidłowe informacje. Możesz go znaleźć w bootstrap / cache / config.php. Upewnij się, że poświadczenia są tam. Zajęło mi tydzień, zanim to rozgryzłem. Mam nadzieję, że kiedyś komuś to pomoże.
źródło
Dla celów programistycznych https://mailtrap.io/ udostępnia wszystkie ustawienia, które należy dodać w pliku .env. Na przykład:
W przeciwnym razie dla celów implementacji możesz pobrać poświadczenia smtp do dodania w pliku .env z poczty (np. Gmail n all)
Po dodaniu należy ponownie uruchomić serwer
źródło
Mnie też się to zdarza.
Jeśli nadal nie działa, spróbuj
php artisan config:cache
źródło
Dla przyszłych odniesień do osób, które tu przyjeżdżają. po uruchomieniu polecenia, które zostało podane w trzeciej odpowiedzi tutaj ( używam teraz Laravel 5.3 ).
Możesz napotkać ten problem:
W takim przypadku musisz dodać go ręcznie z powrotem do listy dostawców w pliku app.php. PRZEJDŹ DO:
app->config->app.php->'providers[]'
i dodaj go, na przykład:Mam nadzieję, że to komuś pomoże.
źródło
Miałem ten sam problem; mój
MAIL_ENCRYPTION
byłtls
włączony,mail.php
ale byłnull
w.env
aktach.Więc zmienił
null
siętls
i to zadziałało!źródło
Żadne z powyższych rozwiązań nie działało dla mnie na hoście lokalnym. Zezwoliłem nawet na dostęp z mniej bezpiecznych aplikacji, zezwoliłem na dostęp przez wyświetlacz odblokuj captcha i ustawiłem weryfikację peera i weryfikację nazwy partnera na false dla SSL.
Ostatecznie użyłem otwartego rozwiązania do testowania SMTP MailHog. Kroki są następujące:
źródło
Oznacza to po prostu, że Twój serwer nie ma dostępu do serwera SMTP.
Możesz to sprawdzić, wykonując:
Powinien pojawić się błąd odmowy dostępu.
Rozwiązaniem jest po prostu użycie innego serwera SMTP, do którego ma dostęp Twój serwer.
źródło
Powinieneś zrestartować serwer i uruchomić następujące komendy:
To powinno działać.
źródło
Jeśli wyniki z
dd(Config::get('mail'));
są zerowe, po prostu użyj poleceniaźródło
Moja opinia po wprowadzeniu zmian w plikach .env zrestartuj serwer i ponownie uruchom aplikację. Aby mieć pewność co do rzeczywistego błędu. Rzemieślnik php czyści i buforuje później działa całkiem dobrze.
źródło
Miałem ten sam problem, co ty, po prostu go uruchomiłem.
Po pierwsze, musisz dwukrotnie sprawdzić, czy ustawienia .env są poprawnie skonfigurowane. Oto moje ustawienia:
Upewnij się, że Twoje hasło nie znajduje się w cudzysłowie :).
A w config / mail.php zawiera następujące elementy, bez komentarzy.
Mam nadzieję, że to działa dla Ciebie :)
źródło
W moim przypadku: Zrestartuj serwer i uruchom
php artisan config:clear
polecenie.źródło
źródło