1. ホーム
  2. php

[解決済み] Laravel Homestead Swift 送信者アドレスがないとメッセージを送信できません。

2022-03-03 02:45:07

質問

Laravel 5.1 Homesteadの純正メール設定で、パスワードリセットメールを送信しようとすると、このエラーが発生します。

Swift_TransportException in AbstractSmtpTransport.php line 162:Cannot send message without a sender address

アドレスはapp/config/mail.phpに記入されています。

'from' => array('address' => '[email protected]', 'name' => 'hawle'),

解決方法は?

あなたの .env ファイルには、電子メールアカウントの電子メールアドレスとパスワードを設定する必要があります。また、使用するメールサーバーのホストとポートを設定する必要があります。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=25
MAIL_USERNAME= ***USER NAME***
MAIL_PASSWORD= ***PASSWORD***
MAIL_ENCRYPTION=tls

または、すべてが完了したことを確認するために mail.php ファイルを作成します(下記の注を参照)。

'host' => env('MAIL_HOST', 'smtp.gmail.com'),
/*
|--------------------------------------------------------------------------
| SMTP Host Port
|--------------------------------------------------------------------------
|
| This is the SMTP port used by your application to deliver e-mails to
| users of the application. Like the host we have set this value to
| stay compatible with the Mailgun e-mail application by default.
|
*/
'port' => env('MAIL_PORT', 25),
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => ['address' => '[email protected]', 'name' => 'hawle'],
/*
|--------------------------------------------------------------------------
| E-Mail Encryption Protocol
|--------------------------------------------------------------------------
|
| Here you may specify the encryption protocol that should be used when
| the application send e-mail messages. A sensible default using the
| transport layer security protocol should provide great security.
|
*/
'encryption' => env('MAIL_ENCRYPTION', 'tls'),

注意: このセクションでは .env ファイルを使用します。実稼働環境では異なる設定になる可能性が高いからです。

すべて完了してもうまくいかない場合は、キャッシュが原因かもしれません。これでコンフィグキャッシュをクリアすることができます。

php artisan config:cache

また、注意してください。

  • ポート465はGmail用です。うまくいかない場合は、25番をご利用ください。
  • mail.php ファイルは /app/config/mail.php (OPの言うとおり)です。
  • は、その .env ファイルは、プロジェクトのルートにあります。
  • Mailtrap.ioは、SMTPをテストするためのサービスです。実際にメールを送信するわけではありません。

Viktorminatorさんがおっしゃる通りです。 アプリのパスワードを作成し、通常のパスを使用しないようにすることを検討する必要があります。パスワード作成用リンク myaccount.google.com/apppasswords