[英]How to fetch record from database and send it to email using codeigniter?
[英]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.