寄送会员通知信
Laravel基於SwiftMailer函式库开发了一套邮件套件,
可以支援多种服务,
在我们使用邮件功能之前,
要先安装Guzzle HTTP函式库.
(PHP必须在7.1.3以上)
composer require guzzlehttp/guzzle
邮件相关设定
邮件的设定放在config/mail.php档案中,我们使用Gmail SMTP来当作测试用的邮件服务,在.env的邮件设定如下
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD= (密码)
MAIL_ENCRYPTION=tls
如果要使用其他邮件服务,
除了设定config/mail.php档案,
服务相关的验证资料都放在config/services.php档案中,
必须要设定完後才可以正常使用,
在设定完Gmail SMTP相关设定後,
就可以开始测试寄送邮件了.
寄送会员通知信
原本正式的流程,
还要经过认证的过程,
不过我们在这里就直接省略,
直接寄E-mail通知就解决了.
我们可以使用Mail:send()的函式寄送邮件,
相关的程序如下:
必须要use Mail; //寄信 否则会出现错误 Class 'App\Http\Controllers\Mail' not found
app/Http/Controllers/UserAuthController.php
<?PHP
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Validator; //验证器
use Hash; //杂凑
use Mail; //寄信
use App\Shop\Entity\User; //使用者 Eloquent ORM Model
class UserAuthController extends Controller
{
//处理注册资料
public function signUpProcess()
{
//省略
User::create($input);
//寄送注册通知信
$mail_binding = [
'name' => $input['name']
];
Mail::send('email.signUpEmailNotification', $mail_binding,
function($mail) use ($input){
//收件人
$mail->to($input['email']);
//寄件人
$mail->from('[email protected]');
//邮件主旨
$mail->subject('恭喜注册Laravel部落格成功!');
});
//重新导向到登入页
return redirect('/user/auth/sign-in');
}
}
?>
在Mail::send()的第一个参数是寄送邮件药使用的邮件模板,
模板位置一样是放在resources/views目录下,
上面的范例则是使用resources/views/email/signUpEmailNotification.blade.php
模板档案,
模板档案只显示使用者昵称,
并加入注册成功的相关字样而已.
第二个参数,
代表要传入到模板的变数资料,
在模板中我们有用name变数去显示使用者的昵称,
所以在模板变数资料,
需要将name资料传给模板.
resources/views/email/signUpEmailNotification.blade.php
<h1> 恭喜 {{ $name }} Laravel部落格 注册成功</h1>
第三个参数,为设定E-mail寄送的相关寄件人及收件人相关设定,像是寄件人、收件人及邮件主旨,当设定完成後就可以测试传送表单资料,看看是否有正确的收到寄送的注册通知信了!
执行 http://localhost:6943/user/auth/sign-up ,送出表单之後收邮件
可以成功发送邮件了.
补充:目前app/Http/UserAuthController.php的完整程序码
<?PHP
namespace App\Http\Controllers;
use Mail;
use Hash;
use Validator;
use App\Http\Controllers\Controller;
use App\Module\ShareData;
use App\Entity\User;
class UserAuthController extends Controller
{
//使用者注册画面
public function signUpPage()
{
$name = 'sign_up';
$binding = [
'title' => ShareData::TITLE,
'name' => $name,
];
return view('user.sign-up', $binding);
}
//处理注册资料
public function signUpProcess()
{
//接收输入资料
$input = request()->all();
//验证规则
$rules = [
//昵称
'name' => [
'required',
'max:50',
],
//帐号(E-mail)
'account' => [
'required',
'max:50',
'email',
],
//密码
'password' => [
'required',
'min:5',
],
//密码验证
'password_confirm' => [
'required',
'same:password',
'min:5'
],
];
//验证资料
$validator = Validator::make($input, $rules);
if($validator->fails())
{
//资料验证错误
return redirect('/user/auth/sign-up')
->withErrors($validator)
->withInput();
}
$input['password'] = Hash::make($input['password']);
User::create($input);
//寄送注册通知信
$mail_binding = [
'name' => $input['name']
];
Mail::send('email.signUpEmailNotification', $mail_binding,
function($mail) use ($input){
//收件人
$mail->to($input['account']);
//寄件人
$mail->from('[email protected]');
//邮件主旨
$mail->subject('恭喜注册Laravel部落格成功!');
});
//重新导向到登入页
return redirect('/user/auth/sign-in');
}
//使用者登入画面
public function signInPage()
{
$name = 'sign_in';
$binding = [
'title' => ShareData::TITLE,
'name' => $name,
];
return view('user.sign-in', $binding);
}
//登出
public function signOut()
{
//重新导向回灯入页
return redirect('/user/auth/sign-in');
}
}
?>
注册功能的总结
在会员注册功能这里,
我们花了很多时间,
详细介绍Laravel的许多相关功能,
很多以前要花不少时间来做的事情,
Laravel都已经帮我们做好了,
我们可以更专心地去构思及开发网站,
不用花太多繁复的时间在重复的事情上.
虽然30天已经快到了,
不过後面还会继续发,
希望能够将整个架构完整地补完.
其实很多的效能优化技巧都拥有「用了不一定会让效能变得比较快,就算有可能也是使用者难以感知的微幅进步...
在Day 20有稍微提到中断机制,我们稍微深入说明一下,中断其实也是种不浪费资源的方式,如果处理器一...
-治理结构 -波特的价值链 职能通过开展将输入转化为有用结果的活动来产生价值。一个组织通常由直线职...
AWS 所提供的 AWS Academy 教材可以透过 AWS Academy Learning M...
router-link to 函数 指定导向,包含以下方法 <!-- 直接指定路径 -->...