web-dev-qa-db-ja.com

Laravel 5.7-確認メールは送信されません

laravelインスタンスをバージョン5.6からバージョン5.7にアップグレードしました。ここで、 laravelからの組み込みの電子メール検証 を使用してみます。

私の問題は、電子メールが届く「再送信」機能を使用すると、登録が成功した後に電子メールが届かないことです。

何が問題ですか?

6
Markus

私はこれとまったく同じ問題を抱えていました。これはLaravelのデフォルトのコードです。

登録が成功した後にメールを送信するには、次の回避策を実行できます。

app\Http\Controllers\Auth\RegisterController

これを変更:

protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

これに:

protected function create(array $data)
    {
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

        $user->sendEmailVerificationNotification();

        return $user;
    }

私も同じ問題を抱えています。ソースコードを確認したところ、sendEmailVerificationNotfication()メソッドを呼び出すために実装する必要はありません。イベントハンドラーは以前に作成されているため、EventServiceProvider.phpにイベントハンドラーを追加するだけです。 、ララエルはそれを更新できません。次のようになります。

namespace App\Providers;

use Illuminate\Support\Facades\Event;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
    ];
4
laze

他の誰かが同じ問題の解決策を探している場合。

ドキュメントを読んでください。この問題を解決するために必要なことを正確に説明しています

https://laravel.com/docs/5.7/verification

簡単に言えば、すでに5.7を使用している場合(つまり、usersテーブルに必要なフィールドがある場合)、必要なことは次のとおりです。

  • UserモデルにMustVerifyEmailインターフェースを実装させます。
  • _['verify' => true]_を_Auth::routes_メソッドAuth::routes(['verify' => true]);に追加します

メールの確認に必要なものはすべて上のリンクにあります。

2
djug

Djugの返信に加えて、バージョン5.6からのアップグレード後に同じ問題が発生した場合は、私と同じように、実装するためのステップバイステップガイドがここにあります。

https://laravel.com/docs/5.7/upgrade

セクションの下Email Verification

私がこれとかなりの時間をかけて苦労していたので、これが誰かを助けることを願っています。

2

カスタム登録ページがある場合は、次のようにユーザーを作成した後でイベントを起動できます。

event(new Registered($user));

2
Zane