繁体   English   中英

Laravel:从数据库获取记录并将其发送到电子邮件模板

[英]Laravel: Fetch record from db and send it to email template

我已经在Laravel 5中成功实现了发送电子邮件的过程。现在,我要做的是从数据库中获取一些记录并将其发送到电子邮件。 我的发送电子邮件代码是:

 Mail::send('email', ['name' => "EE"], function($m) {
 $m->to(Input::get('email'), '')->subject('Password Request');
 });

电子邮件模板为:

Hello,

Your password has been changed, successfully.
Your new password is:"**password from database**" 
Kindly, change your password later on.

Thanks!

因此,“来自数据库的密码”必须来自数据库。 我该怎么办? 有什么帮助吗?

$userInfo = User::find(1);
        Mail::send('yourTemplate', array('userInfo'=> $eventInfo), function($message)  {
        $message
            ->from('from@mail.com', 'test')
            ->to('to@mail.com', 'name')
            ->subject('subject');
         });

然后在您的模板文件中使用此变量,例如

Hello,

Your password has been changed, successfully.
Your new password is: {!! $userInfo->password !!};
Kindly, change your password later on.

Thanks!

根据您的问题,您希望从数据库表中获取密码,这是不可能的,因为密码是加密的,并且向用户发送加密版本是无用的。

您可以做的是生成一个新密码,将新密码保存在用户行,电子邮件列下的数据库中,然后将生成的密码通过电子邮件发送给用户:

您可以这样做:

我假设用户电子邮件地址存储在`user表的email列下,并且您具有User模型:

$email = Input::get('email');
$user = User::where('email', $email)->first();

if($user){
      $new_password = str_random(8); //generates random string , eight character long

      $user->password = \Hash::make($new_password);
      $user->save();

      $data = [
                 'name'          => $user->first_name,
                 'new_password ' => $new_password 
      ];

      Mail::send('emails.password-reset', $data, function($m) use ($user){
         $m->to($user->email, '')->subject('Password Request');
      });
}


In email template: views\emails\password-reset.blade.php:

Hello {!!$name!!},

Your password has been changed, successfully.
Your new password is:"{!!$new_password!!}" 
Kindly, change your password later on.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM