web-dev-qa-db-ja.com

Laravel Homestead Swift送信者アドレスなしではメッセージを送信できません

パスワードリセットメールを送信しようとすると、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'),
19

.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

39
Szenis

App/config/mail.phpに「from」が設定されていることを確認してください

'from' => ['address' => '[email protected]', 'name' => 'myname']

問題が解決します。

15
Ali

.envファイルにアクセスできない場合、次のようにapp/config/mail.phpのenv呼び出しにデフォルト値を追加できます。

    'from' =>  ['address' => env('MAIL_FROM_EMAIL','[email protected]'), 'name' => env('MAIL_FROM_NAME','SpongeBob')],

このアプローチでは、.envファイルからデータを取得しようとします。何も存在しない場合は、デフォルトで設定したものが使用されます。

2

エラーは引き続き発生しました。設定後およびコマンドの実行

php artisan view:clear;
php artisan config:cache;
php artisan cache:clear;
php artisan route:cache;

コードを確認してください

\Illuminate\Support\Facades\Mail::send('layouts.mail', [ 'content' => 'testmail'],    function ($m) use ($msg2){
$m->from('[email protected]', 'ABC'); 
// this line was env('MAIL_FROM_ADDRESS') ; cant read from .env
$m->to('[email protected]', 'XYZ')->subject('TestMailSubject!');
...
0
felisleo119