web-dev-qa-db-ja.com

取得しようとしています Laravel 仕事に5 Eメール

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
140
Vantheman6

私はそれが今@ Vantheman6のためにあなたのために働いているのを知っています、しかしこれはそれが他の誰かのために同じであるならば私のために働いたものです。

使用しているメールサービスの詳細を.envファイルに追加しました。だから以下の詳細を確認してください

MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword

.envファイル内のファイルは正確です。

注:.envファイルを編集した後は、そこに入れた新しいデータが選択されるように、サーバーを再起動することを忘れないでください。

サーバーを再起動しないと、このエラーの原因となるような変更を加えても、.envファイルは引き続き古いメールデータをアプリに表示します。

226

私の.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時間以上かかりました。

46
Amir

設定ファイルのユーザ名とパスワードが正しく設定されていないため、認証エラーが発生しています。

これを変更してください。

'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'));
});
32
jszobody

問題はキャッシュをクリアすることで解決されます

php artisan config:cache
13
zainudin noori

ついに私は手に入れました!共有するだけで、単に.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,
10
yaksowmin

開発目的で 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など)。

追加後、必ずサーバーを再起動してください

9

同じ問題を抱えていてオンラインですべて試してもうまくいかない場合は、おそらく間違った情報を送信しているのは設定キャッシュファイルです。 bootstrap/cache/config.phpにあります。認証情報が正しいことを確認してください。それを理解するのに1週間かかった。私はこれがいつか誰かに役立つことを願っています。

8
Nabil

それは私にも起こります。

これは、.envファイルを編集するときにサーバーを再起動する必要があるためです。現在のphp artisan serveを停止してもう一度起動するだけです。これは確かにうまくいくでしょう。

それでもうまくいかない場合はphp artisan config:cacheをやってみてください

7
Advaith

ここに来る人々への将来の参照のために。 あなたがここで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,

希望それが誰かを助けます。

4
GabMic

これは単にあなたのサーバーがSMTPサーバーにアクセスできないということです。

これをテストすることができます。

telnet <smtpServer> <smtpPort>

アクセス拒否エラーが表示されます。

解決策はあなたのサーバーからアクセスできる別のSMTPサーバーを使うことです。

2
stidiovip

上記の解決法のどれもlocalhostで私のために働きませんでした。安全性の低いアプリからのアクセスも許可し、display unlock captchaによるアクセスも許可し、検証ピアと検証ピア名をSSL用にfalseに設定しました。

結局、私はMailHogのオープンソースSMTPテストソリューションを使いました。手順は次のとおりです。

  1. あなたのOS用のMailHogの最新バージョンをダウンロードする
  2. .envファイルに次の設定を指定してください。

MAIL_DRIVER = smtp

MAIL_Host = 127.0.0.1

MAIL_PORT = 1025

MAIL_USERNAME = testuser

MAIL_PASSWORD = testpwd

MAIL_ENCRYPTION = null

[email protected]

  1. MailHogのダウンロードファイルを実行する
  2. メールを送る
  3. Localhost:8025に移動して、送信された電子メールを確認してください。
2
ZerosAndOnes

私は同じ問題を抱えていました。私のMAIL_ENCRYPTIONmail.phpではtlsでしたが、.envファイルではnullでした。
それで私はnulltlsに変更しました、そしてそれはうまくいきました!

2

サーバーを再起動して次のコマンドを実行してください。

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

それはうまくいくはずです。

1

dd(Config::get('mail'));の結果がnullの場合は、単純に次のコマンドを使用してください。

php artisan config:clear
0
Mo D Genesis