URLを入力して特定のユーザーに電子メールを送信しようとしていますが、次のようなエラーが表示されます。
AbstractSmtpTransport.php 383行目のSwift_TransportException:レスポンスコード250が必要ですが、コード "530"を取得し、メッセージ "530"を取得しました
これまでのところ、私はGmailで機能するようにしようとしています。これを機能させるにはどうすればよいですか。
これは私がこれまでに持っているものです: 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,
];
これは私がルートに持っているものです:
Route::get('test', function() {
Mail::send('Email.test', [], function ($message) {
$message->to('[email protected]', 'HisName')->subject('Welcome!');
});
});
これは私が私のコントローラに持っているものです:
class MailController extends Controller
{
public function Sending_Email()
{
$this->call('GET','Email.test');
return View('Email.test');
}
}
これが私の.envファイルにあります。
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword
私はそれが今@ Vantheman6のためにあなたのために働いているのを知っています、しかしこれはそれが他の誰かのために同じであるならば私のために働いたものです。
使用しているメールサービスの詳細を.envファイルに追加しました。だから以下の詳細を確認してください
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword
.envファイル内のファイルは正確です。
注:.envファイルを編集した後は、そこに入れた新しいデータが選択されるように、サーバーを再起動することを忘れないでください。
サーバーを再起動しないと、このエラーの原因となるような変更を加えても、.envファイルは引き続き古いメールデータをアプリに表示します。
私の.envファイル構成は、laravel 5.1の場合、このようなものです
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=tls
ここで最も重要なことは、Gmailアプリケーション固有のパスワード(16桁)を作成したことです。
私はもう一つのことを明らかにする必要があります。なぜなら、どの設定も運が悪いからです。つまり、変更したときはいつでも.envファイルでこのコマンドを実行する必要があります。
php artisan config:cache
このコマンドがないとlaravelはキャッシュから以前の設定を実行するので、これが最も最も重要です。把握するのに10時間以上かかりました。
設定ファイルのユーザ名とパスワードが正しく設定されていないため、認証エラーが発生しています。
これを変更してください。
'username' => env('[email protected]'),
'password' => env('MyPassword'),
これに:
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
env
メソッドは、あなたの.envファイルをチェックします。あなたの.envファイルでは、これらをMAIL_USERNAME
と呼ぶので、env
メソッドに渡す必要があります。
1つのトラブルシューティングのヒント: 実際に生成された設定 を見ることができるようにdd(Config::get('mail'));
を追加してください。これはあなたがこのような問題を発見するのを助けて、Laravelがどんな情報を試して使うつもりであるかを正確に知るのに役立ちます。ですから、あなたが持っているものを調べるためにあなたのテストルートでそれを一時的に止めたいと思うかもしれません:
Route::get('test', function()
{
dd(Config::get('mail'));
});
問題はキャッシュをクリアすることで解決されます
php artisan config:cache
ついに私は手に入れました!共有するだけで、単に.envよりも多くの設定があります。
これは.envです
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=********
MAIL_ENCRYPTION=tls
config/mail.phpも動作するようにアドレスと名前を入力する必要があります。
'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,
開発目的で https://mailtrap.io/ .envファイルに追加する必要があるすべての設定を提供します。例えば:
Host: mailtrap.io
Port: 25 or 465 or 2525
Username: cb1d1475bc6cce
Password: 7a330479c15f99
Auth: PLAIN, LOGIN and CRAM-MD5
TLS: Optional
それ以外の場合は、実装目的で、smtp認証情報をメールから.envファイルに追加することができます(gmail n allなど)。
追加後、必ずサーバーを再起動してください
同じ問題を抱えていてオンラインですべて試してもうまくいかない場合は、おそらく間違った情報を送信しているのは設定キャッシュファイルです。 bootstrap/cache/config.phpにあります。認証情報が正しいことを確認してください。それを理解するのに1週間かかった。私はこれがいつか誰かに役立つことを願っています。
それは私にも起こります。
これは、
.env
ファイルを編集するときにサーバーを再起動する必要があるためです。現在のphp artisan serve
を停止してもう一度起動するだけです。これは確かにうまくいくでしょう。
それでもうまくいかない場合はphp artisan config:cache
をやってみてください
ここに来る人々への将来の参照のために。 あなたがここで3番目の答えで与えられたコマンドを実行した後( 私は今Laravel 5.3 を使っています)。
php artisan config:cache
この問題が発生する可能性があります。
[ReflectionException]
Class view does not exist
その場合は、app.phpファイルの下のプロバイダリストに手動で追加し直す必要があります。 GO-TO:app->config->app.php->'providers[]'
を追加してください。
Illuminate\View\ViewServiceProvider::class,
希望それが誰かを助けます。
これは単にあなたのサーバーがSMTPサーバーにアクセスできないということです。
これをテストすることができます。
telnet <smtpServer> <smtpPort>
アクセス拒否エラーが表示されます。
解決策はあなたのサーバーからアクセスできる別のSMTPサーバーを使うことです。
上記の解決法のどれもlocalhostで私のために働きませんでした。安全性の低いアプリからのアクセスも許可し、display unlock captchaによるアクセスも許可し、検証ピアと検証ピア名をSSL用にfalseに設定しました。
結局、私はMailHogのオープンソースSMTPテストソリューションを使いました。手順は次のとおりです。
MAIL_DRIVER = smtp
MAIL_Host = 127.0.0.1
MAIL_PORT = 1025
MAIL_USERNAME = testuser
MAIL_PASSWORD = testpwd
MAIL_ENCRYPTION = null
私は同じ問題を抱えていました。私のMAIL_ENCRYPTION
はmail.php
ではtls
でしたが、.env
ファイルではnull
でした。
それで私はnull
をtls
に変更しました、そしてそれはうまくいきました!
サーバーを再起動して次のコマンドを実行してください。
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear
php artisan config:cache
それはうまくいくはずです。
dd(Config::get('mail'));
の結果がnullの場合は、単純に次のコマンドを使用してください。
php artisan config:clear