Ich versuche, eine E-Mail an einen bestimmten Benutzer zu senden, indem ich die URL eingebe, erhalte jedoch die folgende Fehlermeldung:
Swift_TransportException in AbstractSmtpTransport.php Zeile 383: Erwarteter Antwortcode 250, aber Code "530" mit der Meldung "530 5.7.1 Authentifizierung erforderlich
Bisher versuche ich nur, es mit Google Mail zum Laufen zu bringen. 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 auf 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 steht in meiner .env-Datei:
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
quelle
quelle
Antworten:
Ich weiß, dass es jetzt für dich funktioniert @ Vantheman6, aber das hat für mich funktioniert, falls es für jemand anderen dasselbe ist.
Ich habe meiner .env-Datei die Details des von mir verwendeten Mail-Dienstes hinzugefügt. Stellen Sie daher die folgenden Details sicher
in der .env-Datei sind korrekt.
HINWEIS: Vergessen Sie nicht, Ihren Server nach dem Bearbeiten 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 der App weiterhin die alten E-Mail-Daten an, obwohl Sie Änderungen vorgenommen haben, die diesen Fehler verursachen können.
quelle
php artisan config:cache
Neustart des Servers die aktualisierte Konfiguration nicht übernommen. Versuchen Sie esphp artisan config:cache
erneutMeine .env-Dateikonfiguration ist für Laravel 5.1 wie folgt
Hier ist das Wichtigste, dass ich ein anwendungsspezifisches Passwort für Google Mail erstellt habe (16-stellig).
Ich muss noch etwas verraten, da ich für keine Konfiguration Glück habe. Das heißt, wenn ich die .env-Datei geändert habe, muss dieser Befehl ausgeführt werden
Und dies ist am wichtigsten, da laravel ohne diesen Befehl vorherige Einstellungen aus dem Cache ausführt. Ich habe mehr als 10 Stunden gebraucht, um das herauszufinden.
quelle
php artisan cache:clear
wannphp artisan config:cache
es das Problem für mich gelöst hat. Danke dir!php artisan config:cache
Sie erhalten einen Authentifizierungsfehler, weil der Benutzername und das Kennwort in Ihrer Konfigurationsdatei falsch eingerichtet sind.
Ändere das:
Dazu:
Die
env
Methode überprüft Ihre .env-Datei. In Ihrer .env-Datei rufen Sie diese aufMAIL_USERNAME
, und das müssen Sie an dieenv
Methode übergeben.Ein Tipp zur Fehlerbehebung: Fügen
dd(Config::get('mail'));
Sie hinzu, damit Sie die tatsächlich generierte Konfiguration sehen können . Auf diese Weise können Sie Probleme wie dieses erkennen und genau wissen, welche Informationen Laravel verwenden wird. Vielleicht möchten Sie dies auf Ihrer Testroute vorübergehend stoppen, um zu überprüfen, was Sie haben:quelle
'password' => env('MAIL_PASSWORD'),
was ich interessant finde, weil ich überall aufgefordert werde, Ihre E-Mail-Adresse und Ihr Passwort dafür einzugeben. Ich erhalte immer noch einen FehlerSwift_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'));
. Das Konfigurationsverzeichnis enthält viele Dateien'host' => env('MAIL_HOST', 'smtp.gmail.com'),
MAIL_HOST
in Ihrer .env-DateiMAIL_HOST=smtp.gmail.com
Am Ende entfernte ich also die gesamte Umgebung aus jedem Teil der mail.php-Datei. Und jetzt gehen die richtigen Informationen durch. OMG Danke, es hat funktioniert. Du bist der MannDas Problem wird durch Löschen des Cache gelöst
quelle
Endlich habe ich! Nur zum Teilen gibt es mehr Konfiguration als nur .env
Dies ist .env
config / mail.php muss auch Adresse und Name eingeben, damit es funktioniert.
quelle
Wenn Sie jemals die gleichen Probleme haben und alles online ausprobieren und es nicht funktioniert, ist es wahrscheinlich die Konfigurations-Cache-Datei, die die falschen Informationen sendet. Sie finden es in bootstrap / cache / config.php. Stellen Sie sicher, dass die Anmeldeinformationen genau dort sind. Ich habe eine Woche gebraucht, um das herauszufinden. Ich hoffe, das wird eines Tages jemandem helfen.
quelle
Zu Entwicklungszwecken bietet Ihnen https://mailtrap.io/ alle Einstellungen, die in der ENV-Datei hinzugefügt werden müssen. Z.B:
Andernfalls können Sie zu Implementierungszwecken die SMTP-Anmeldeinformationen, die in der ENV-Datei hinzugefügt werden sollen, aus der E-Mail abrufen (wie Google Mail n all).
Stellen Sie nach dem Hinzufügen sicher, dass der Server neu gestartet wird
quelle
Das passiert mir auch.
Wenn es immer noch nicht funktioniert hat, versuchen Sie es
php artisan config:cache
quelle
Für zukünftige Hinweise auf Menschen, die hierher kommen. Nachdem Sie den Befehl ausgeführt haben, der in der dritten Antwort hier gegeben wurde ( ich verwende jetzt Laravel 5.3 ).
Möglicherweise tritt dieses Problem auf:
In diesem Fall müssen Sie es manuell wieder zu Ihrer Anbieterliste unter der Datei app.php hinzufügen. GO-TO:
app->config->app.php->'providers[]'
und füge es wie folgt hinzu:Hoffe das hilft jemandem.
quelle
Ich habe das gleiche Problem gehabt; Mein
MAIL_ENCRYPTION
wartls
an,mail.php
aber es warnull
in der.env
Akte.Also änderte ich
null
zutls
und es funktionierte!quelle
Keine der oben genannten Lösungen hat bei localhost für mich funktioniert. Ich habe sogar den Zugriff von weniger sicheren Apps aus zugelassen, den Zugriff über Captch Unch Captcha zugelassen und den Verify-Peer und den Verify-Peer-Namen für SSL auf false gesetzt.
Schließlich habe ich die Open-Source-SMTP-Testlösung von MailHog verwendet. Die Schritte sind wie folgt:
quelle
Das bedeutet einfach, dass Ihr Server keinen Zugriff auf den SMTP-Server hat.
Sie können dies testen, indem Sie Folgendes tun:
Sie sollten den Fehler Zugriff verweigert erhalten.
Die Lösung besteht darin, nur einen anderen SMTP-Server zu verwenden, auf den Ihr Server zugreifen kann.
quelle
Sie sollten den Server neu starten und die folgenden Befehle ausführen:
Das sollte funktionieren.
quelle
Wenn Ihre Ergebnisse von
dd(Config::get('mail'));
null sind, verwenden Sie einfach den Befehlquelle
Meine Meinung, nachdem Sie Änderungen an Ihren .env-Dateien vorgenommen haben, starten Sie Ihren Server neu und stellen Sie die App erneut bereit. Nur um sicher zu gehen, dass der eigentliche Fehler vorliegt. Der PHP Artisan Clear und Cache danach funktioniert ziemlich gut.
quelle
Ich hatte das gleiche Problem wie Sie, ich habe es gerade zum Laufen gebracht.
Zunächst müssen Sie überprüfen, ob die .env-Einstellungen korrekt eingerichtet sind. Hier sind meine Einstellungen:
Bitte stellen Sie sicher, dass Ihr Passwort nicht zwischen Anführungszeichen steht :).
Und in config / mail.php hat es Folgendes ohne die Kommentare.
Hoffe es funktioniert bei dir :)
quelle
In meinem Fall: Starten Sie den Server neu und führen Sie den
php artisan config:clear
Befehl aus.quelle
quelle