web-dev-qa-db-ja.com

応答コード220を予期していましたが、Laravelにメッセージ「」を含むコード「」を取得しました

Laravel Mail関数を使用してメールを送信しています。以下は私のapp/config/mail.phpファイルの設定です。

'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,

コントローラーメール方式

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

コードを実行すると、次のエラーメッセージが表示されます。

Swift_TransportException

応答コード220を予期していましたが、メッセージ「」を含むコード「」を取得しました

ビューにいくつかのデータを含むSendMail.phpファイルを作成しました。

このエラーメッセージを解決するにはどうすればよいですか?

49
Kirmani88

通常、この問題は、gmailアカウントの2段階認証を有効にしない場合に発生する可能性があります(emailの送信に使用している(これは here で実行できます)。したがって、最初にtwo step verificationを有効にすると、2段階認証を有効にするための多くのリソースを見つけることができます。有効にしたら、app passwordを作成する必要があります。 app passwordファイルで.envを使用します。完了したら、.envファイルは次のようになります。

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

あなたの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,

];

その後、php artisan config:cacheおよびphp artisan config:clearを実行し、メールが機能することを確認してください。

79
Sid

私の場合、私は

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)

動作するように。コードの残りは@Sidが言ったものと同じでした。

そして、環境ファイルとapp/config/mail.phpの両方を編集する必要はないと思います。 1つの方法を使用してください。

@ Zanのコメントに従って編集

tls保護を有効にする必要がある場合は、次の設定を使用します。

MAIL_PORT=587
MAIL_ENCRYPTION= tls  

他のGmail設定については here をご覧ください

14

助けたのは... sendmailパラメータを-bsから-tに変更したことです。

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

Swift Mailerを使用している場合:行ったテストに基づいて、$ transport変数が以下のようになっていることを確認してください。このエラーは、sslとポートの設定ミスが原因です。 注:トランスポート変数に「ssl」または「tls」を含める必要があります。

サンプルコード:

// 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);
1
Chavez Harris

私にとって問題はポートでした。最初に誤ってポート465を使用しました。これはSSLでは機能しますが、TLSでは機能しません。そのため、重要なことはポートを587に変更することでした。

1
Jan Żankowski

更新後の環境は

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

これは2段階の検証なしで機能しました。 2段階認証を有効にすると、うまくいきませんでした。

0
Sunil Kumar

このエラーメッセージは、応答がなかったORサーバーが接続できなかったことを意味します。

次の設定が私の目的で機能しました:

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

私のSMTP設定は次のとおりです。

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