Laravel 4:如何发送确认电子邮件?

时间:2013-08-28 07:59:58

标签: email laravel laravel-4 confirmation-email

到目前为止,我已经制作了一个带登录/注册的应用程序,它运行正常。 注册后会发送欢迎电子邮件。

但我想做的是在该邮件中发送一个链接,只有点击它之后才能登录。

就像论坛等的常见注册电子邮件一样。

有人可以帮我吗?

这是postRegister方法:

public function postRegister()
{
    $input = Input::all();

    $rules = array(
        'username' => 'required',
        'password' => 'required');

    $validation = Validator::make($input, $rules);

    if ($validation->passes()) {

        $password = $input['password'];
        $password = Hash::make($password);

        $user = new User;
        $user->username = $input['username'];
        $user->email = $input['email'];
        $user->password = $password;

            $mailer = new Mailers\UserMailer($user);

                 // var_dump($mailer);

                    $mailer->welcomeMail()->deliver();

                    $user->save();

        return Redirect::to('afterRegister');
    }

    return Redirect::back()->withInput()->withErrors($validation)->with('message', 'Validation Errors!');
} 

谢谢

1 个答案:

答案 0 :(得分:26)

以下是一些线索(不会为你编写代码)。

  • 在用户表格中添加两个字段:confirmationconfirmed
  • 在Laravel中创建一个类似registration/verify/{confirmation}的路线,您可以在其中使用给定的确认码(如果找到,将用户的confirmed字段设置为1)在您的数据库中查找用户。
  • 在用户注册后,生成唯一的确认码(您可以使用str_random()辅助功能)。
  • 相应地设置新用户的数据库条目(confirmation =随机代码,confirmed = 0)
  • 在您的电子邮件中为新用户添加验证链接(根据您的验证路线构建)和生成的确认码。

现在可以像这样进行验证尝试:

$user = array(
        'username' => Input::get('username'),
        'password' => Input::get('password'),
        'confirmed' => 1
);

if (Auth::attempt($user)) {
    // success!
    return Redirect::route('restricted/area');
}