it-swarm.com.de

Erwarteter Antwortcode 220, aber Code "" mit Meldung "" in Laravel

Ich verwende die Laravel Mail-Funktion zum Versenden von E-Mails. Das Folgende ist meine app/config/mail.php-Dateieinstellungen.

'driver' => 'sendmail',
'Host' => 'smtp.gmail.com',
'port' => 587,
'from' => array('address' => '[email protected]', 'name' => 'MyName'),
'encryption' => 'tls',
'username' => 'myUsername',
'password' => "password",
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,

Controller-Mail-Methode

//Send Mail     
Mail::send('sendMail', array('key' => 'value'), function($message)
{
    $message->to('[email protected]', 'Sender Name')->subject('Welcome!');
});

Wenn ich den Code ausführe, erhalte ich folgende Fehlermeldung:

Swift_TransportException

Erwarteter Antwortcode 220, aber Code "" mit Meldung "" erhalten

Ich habe eine SendMail.php-Datei erstellt, die einige Daten enthält.

Wie löse ich diese Fehlermeldung?

43
Kirmani88

Dieses Problem kann im Allgemeinen auftreten, wenn Sie die Bestätigung in zwei Schritten für das Konto gmail (das hier ), das Sie zum Senden einer email verwenden, nicht aktivieren können. Aktivieren Sie zunächst two step verification. Hier finden Sie viele Ressourcen, um die Überprüfung in zwei Schritten zu ermöglichen. Nachdem Sie es aktiviert haben, müssen Sie einen app password erstellen. Und verwenden Sie den app password in Ihrer .env-Datei. Wenn Sie damit fertig sind, sieht Ihre .env-Datei ungefähr so ​​aus.

MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=<<your email address>>
MAIL_PASSWORD=<<app password>>
MAIL_ENCRYPTION=tls

und dein mail.php

<?php

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'Host' => env('MAIL_Host', 'smtp.gmail.com'),
    'port' => env('MAIL_PORT', 587),
    'from' => ['address' => '<<your email>>', 'name' => '<<any name>>'],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => false,

];

Führen Sie danach php artisan config:cache und php artisan config:clear aus und prüfen Sie, ob die E-Mail funktionieren sollte.

71
Sid

In meinem Fall musste ich das einstellen 

MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=465           <<<<<<<------------------------- (FOCUS THIS)
MAIL_USERNAME=<<your email address>>
MAIL_PASSWORD=<<app password>>

MAIL_ENCRYPTION= ssl    <<<<<<<------------------------- (FOCUS THIS)

um es zu bearbeiten .. Könnte nützlich sein ... Der Rest des Codes war derselbe wie bei @Sid.

Ich denke, dass das Bearbeiten der Umgebungsdatei und der Datei app/config/mail.php nicht erforderlich ist. Verwenden Sie einfach eine Methode.

Bearbeiten wie im Kommentar von @Zan

Wenn Sie den tls - Schutz aktivieren müssen, verwenden Sie die folgenden Einstellungen.

MAIL_PORT=587
MAIL_ENCRYPTION= tls  

Unter hier finden Sie weitere Google Mail-Einstellungen 

13

Was hat mir geholfen ... Ändern der Sendmail-Parameter von -bs in -t.

'sendmail' => '/your/sendmail/path -t',
1
smoothie

Für mich war das Problem der Port. Ich habe zuerst Port 465 falsch verwendet, der für SSL, aber nicht für TLS funktioniert. Das Wichtigste war also, den Port auf 587 zu ändern.

1
Jan Żankowski

wenn Sie Swift Mailer verwenden: Bitte stellen Sie sicher, dass Ihre $ transport-Variable der unten stehenden -Datei ähnelt. Basierend auf den von mir durchgeführten Tests resultiert dieser Fehler aus einer fehlerhaften Konfiguration von ssl und port . note: you In der Transportvariablen muss 'ssl' oder 'tls' enthalten sein.

BEISPIEL CODE:

// Create the Transport
$transport = (new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl'))
  ->setUsername([email protected])
  ->setPassword(password)
;

// Create the Mailer using your created Transport
$mailer = new Swift_Mailer($transport);

// Create a message
$message = (new Swift_Message('News Letter Subscription'))
  ->setFrom(['[email protected]' => 'A Name'])
  ->setTo(['[email protected]' => 'A Name'])
  ->setBody('your message body')
  ;

// Send the message
$result = $mailer->send($message);
0
Chavez Harris

Ich habe es wie gesagt gesagt, dass mein Env nach dem Update ist 

MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=<mygmailaddress>
MAIL_PASSWORD=<gmailpassword>
MAIL_ENCRYPTION=tls

dies funktionierte ohne Bestätigung in zwei Schritten. Mit aktivierter 2-Schritt-Überprüfung hat es für mich nicht funktioniert.

0
Sunil Kumar

Diese Fehlermeldung bedeutet, dass es keine Antwort gab OR der Server konnte nicht verbunden werden.

Die folgenden Einstellungen haben an meinem Ende funktioniert:

'stream' => [
        'ssl' => [
            'allow_self_signed' => true,
            'verify_peer' => false,
            'verify_peer_name' => false,
        ],
    ]

Beachten Sie, dass meine SMTP-Einstellungen:

MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=[full gmail address]
MAIL_PASSWORD=[App Password obtained after two step verification]
MAIL_ENCRYPTION=ssl
0
Ahmed Numaan