wake-up-neo.net

Versuchen, Laravel 5-E-Mail zur Arbeit zu bringen

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
137
Vantheman6

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.

220

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.

44
Amir

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'));
});
30
jszobody

das Problem wird durch das Löschen des Cache gelöst 

php artisan config:cache
12
zainudin noori

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

9

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,
9
yaksowmin

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.

8
Nabil

Es passiert mir auch. 

Dies liegt daran, dass wir beim Bearbeiten der .env-Datei den Server neu starten müssen. Stoppen Sie einfach den aktuellen php artisan serve und starten Sie ihn erneut. Das wird sicher funktionieren.

Wenn noch nicht gearbeitet, versuchen Sie es mit php artisan config:cache

7
Advaith

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. 

4
GabMic

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.

2
stidiovip

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: 

  1. Lade die neueste Version von MailHog für dein Betriebssystem herunter
  2. Geben Sie die folgenden Einstellungen in Ihrer .env-Datei an

MAIL_DRIVER = smtp

MAIL_Host = 127.0.0.1 

MAIL_PORT = 1025 

MAIL_USERNAME = Testbenutzer 

MAIL_PASSWORD = testpwd 

MAIL_ENCRYPTION = null 

[email protected]

  1. Führen Sie die heruntergeladene Datei von MailHog aus
  2. E-Mail senden
  3. Überprüfen Sie die E-Mail, indem Sie zu localhost: 8025 gehen
2
ZerosAndOnes

ich hatte das gleiche Problem. Meine 'MAIL_ENCRYPTION' war 'tls' in mail.php, aber es war 'null' in der .env-Datei.

2

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.

1

Wenn Ihre Ergebnisse von dd(Config::get('mail')); null sind, verwenden Sie einfach den Befehl 

php artisan config:clear
0
Mo D Genesis