Ich versuche, eine E-Mail an einen angegebenen Benutzer zu senden, indem Sie die URL eingeben. Ich erhalte jedoch die folgende Fehlermeldung:
Swift_TransportException in AbstractSmtpTransport.php Zeile 383: Erwarteter Antwortcode 250, erhielt jedoch Code "530" mit Meldung "530 5.7.1 Authentifizierung erforderlich
Bisher versuche ich nur, es mit Google Mail zu erreichen. Wie kann ich das zum Laufen bringen?
Das habe ich bisher: 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,
];
Das habe ich in den Routen:
Route::get('test', function() {
Mail::send('Email.test', [], function ($message) {
$message->to('[email protected]', 'HisName')->subject('Welcome!');
});
});
Folgendes habe ich in meinem Controller:
class MailController extends Controller
{
public function Sending_Email()
{
$this->call('GET','Email.test');
return View('Email.test');
}
}
Und das ist in meiner .env-Datei:
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword
Ich weiß, dass es jetzt für dich funktioniert @ Vantheman6, aber das ist es, was für mich funktioniert hat, falls es für jemanden anders ist.
Ich fügte meiner .env-Datei die Details des von mir verwendeten Mail-Services hinzu. Stellen Sie daher die folgenden Details sicher
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword
in der .env-Datei sind genau.
HINWEIS: Vergessen Sie nicht, den Server nach der Bearbeitung der .env-Datei neu zu starten, damit die neuen Daten ausgewählt werden, die Sie dort eingegeben haben.
Wenn Sie Ihren Server nicht neu starten, zeigt die .env-Datei weiterhin die alten Mail-Daten an die App an, auch wenn Sie Änderungen vorgenommen haben, die diesen Fehler verursachen können.
Meine .env-Dateikonfiguration ist für laravel 5.1 so
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=tls
das Wichtigste dabei ist, dass ich ein für Google Mail anwendungsspezifisches Passwort (16-stellig) erstellt habe.
Ich muss noch etwas verraten, da für die Konfiguration kein Glück besteht. Das heißt, wenn ich die .env-Datei geändert habe, muss dieser Befehl ausgeführt werden
php artisan config:cache
Und das ist am wichtigsten, denn ohne diesen Befehl führt laravel die vorherigen Einstellungen aus dem Cache aus. Ich brauchte mehr als 10 Stunden, um es herauszufinden.
Sie erhalten einen Authentifizierungsfehler, da der Benutzername und das Kennwort in Ihrer Konfigurationsdatei falsch eingestellt sind.
Ändere das:
'username' => env('[email protected]'),
'password' => env('MyPassword'),
Zu diesem:
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
Die env
-Methode überprüft Ihre .env-Datei. In Ihrer .env-Datei nennen Sie diese MAIL_USERNAME
, also müssen Sie dies an die env
-Methode übergeben.
Ein Tipp zur Fehlerbehebung: Fügen Sie dd(Config::get('mail'));
hinzu, damit Sie die actual generierte config sehen können. So können Sie Probleme erkennen und genau wissen, welche Informationen Laravel versuchen und verwenden wird. Vielleicht möchten Sie das in Ihrer Testroute vorübergehend stoppen, um zu prüfen, was Sie haben:
Route::get('test', function()
{
dd(Config::get('mail'));
});
das Problem wird durch das Löschen des Cache gelöst
php artisan config:cache
Zu Entwicklungszwecken bietet https://mailtrap.io/ Ihnen alle Einstellungen, die in der .env-Datei ..__ hinzugefügt werden müssen. ZB:
Host: mailtrap.io
Port: 25 or 465 or 2525
Username: cb1d1475bc6cce
Password: 7a330479c15f99
Auth: PLAIN, LOGIN and CRAM-MD5
TLS: Optional
Ansonsten können Sie zu Implementierungszwecken die SMTP-Anmeldeinformationen in der .env-Datei aus der E-Mail hinzufügen (wie gmail n all).
Nach dem Hinzufügen muss der Server neu gestartet werden
Endlich habe ich! Nur um es zu teilen, gibt es mehr Konfig als nur .env
Dies ist .env
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=********
MAIL_ENCRYPTION=tls
config/mail.php muss auch Adresse und Namen eingeben, damit es funktioniert.
'driver' => env('MAIL_DRIVER', 'smtp'),
'Host' => env('MAIL_Host', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => '[email protected]' , 'name' => 'YourName' ],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
Wenn Sie jemals die gleichen Probleme haben und alles online versuchen und es nicht funktioniert, ist es wahrscheinlich die Konfigurations-Cache-Datei, die falsche Informationen sendet. Sie finden es in bootstrap/cache/config.php. Stellen Sie sicher, dass die Anmeldeinformationen richtig sind. Ich habe eine Woche gebraucht, um das herauszufinden. Ich hoffe, dass dies irgendwann jemandem helfen wird.
Es passiert mir auch.
Dies liegt daran, dass wir beim Bearbeiten der
.env
-Datei den Server neu starten müssen. Stoppen Sie einfach den aktuellenphp artisan serve
und starten Sie ihn erneut. Das wird sicher funktionieren.
Wenn noch nicht gearbeitet, versuchen Sie es mit php artisan config:cache
Für die zukünftige Bezugnahme auf Menschen, die hierher kommen. nachdem Sie den Befehl ausgeführt haben, der in der dritten Antwort hier gegeben wurde (ich benutze jetzt Laravel 5.3).
php artisan config:cache
Dieses Problem kann auftreten:
[ReflectionException]
Class view does not exist
In diesem Fall müssen Sie sie manuell zu Ihrer Providerliste unter der Datei app.php hinzufügen. GO-TO: app->config->app.php->'providers[]'
und fügen Sie es wie folgt hinzu:
Illuminate\View\ViewServiceProvider::class,
Hoffe das hilft jemandem.
Das bedeutet einfach, dass Ihr Server keinen Zugriff auf den SMTP-Server hat.
Sie können dies testen, indem Sie Folgendes tun:
telnet <smtpServer> <smtpPort>
Sie sollten die Fehlermeldung "Zugriff verweigert" erhalten.
Die Lösung besteht darin, einfach einen anderen SMTP-Server zu verwenden, auf den Ihr Server zugreifen kann.
Keine der oben genannten Lösungen funktionierte bei localhost für mich. Ich erlaubte sogar den Zugriff von weniger sicheren Apps, erlaubte den Zugriff über das Display-Entsperrungs-Captcha und setzte den Peer-Peer und den Peer-Namen für SSL auf False.
Schließlich habe ich die Open Source SMTP-Testlösung von MailHog verwendet. Die Schritte sind wie folgt:
MAIL_DRIVER = smtp
MAIL_Host = 127.0.0.1
MAIL_PORT = 1025
MAIL_USERNAME = Testbenutzer
MAIL_PASSWORD = testpwd
MAIL_ENCRYPTION = null
ich hatte das gleiche Problem. Meine 'MAIL_ENCRYPTION' war 'tls' in mail.php, aber es war 'null' in der .env-Datei.
Sie sollten den Server neu starten und die folgenden Befehle ausführen:
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear
php artisan config:cache
Das sollte funktionieren.
Wenn Ihre Ergebnisse von dd(Config::get('mail'));
null sind, verwenden Sie einfach den Befehl
php artisan config:clear