电子邮件未在注册控制器中发送

时间:2020-07-14 12:06:21

标签: laravel email laravel-7

我尝试在成功注册后发送电子邮件,但无法发送

这是寄存器控制器的代码

protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'city' => $data['city'],
            'gender' => $data['gender'],
            'password' => Hash::make($data['password']),
            'parentname' => $data['parentname'],
            'relation' => $data['relation'],
            'phonenumber' => $data['phonenumber'],
            'email' => $data['email'],
            'address' => $data['address'],
            
        ]);

         $details=[
            'title' => 'title :Check Mail fucntion',
            'body'  => 'test purpose',
        ];

        Mail::to('example.kk49@gmail.com')->send(new WelcomeMail($details));
        return view('mail.thanks');

    }

如果我在以下位置使用此邮件功能

public function __construct()
    {
        $this->middleware('guest');
    }

然后发送电子邮件

3 个答案:

答案 0 :(得分:2)

create()方法的第一行正在返回。这意味着该方法中的其他任何内容都不会执行。您需要将User :: create()的结果捕获到一个变量中,执行其余的操作,然后返回这些结果。

protected function create(array $data)
{
    User::create([
        'name' => $data['name'],
        'city' => $data['city'],
        'gender' => $data['gender'],
        'password' => Hash::make($data['password']),
        'parentname' => $data['parentname'],
        'relation' => $data['relation'],
        'phonenumber' => $data['phonenumber'],
        'email' => $data['email'],
        'address' => $data['address'],
        
    ]);

     $details=[
        'title' => 'title :Check Mail fucntion',
        'body'  => 'test purpose',
    ];

    Mail::to('example.kk49@gmail.com')->send(new WelcomeMail($details));

    Mail::to('otheremail@gmail.com')->send(new AdminNewAccount($details));

    return view('mail.thanks');
}

编辑:我已经对其进行了更新,以显示第二封电子邮件的示例,并且还删除了重复的return语句。

答案 1 :(得分:1)

您可以通过Swift_TransportException来捕获错误,如下所示:

try {
        Mail::to('example.kk49@gmail.com')->send(new WelcomeMail($details));
} catch(\Swift_TransportException $e) {
        $response = $e->getMessage(); // catch the error here
}

答案 2 :(得分:0)

您需要清除配置以使用新配置。 在终端中运行以下命令。

php artisan view:clear
php artisan route:clear
php artisan cache:clear
php artisan config:clear
php artisan config:cache
相关问题