-
laravel邮箱验证时发现QQ邮箱中的字符串和预想的不一样
2020-12-30 16:13:23 -
laravel qq邮箱验证
2019-12-09 12:10:46laravel qq邮箱验证 参考文章 :Laravel自带SMTP邮件组件实现发送邮件(QQ、163、企业邮箱都可) laravel5.6发送邮件功能实现&队列使用(基于数据库) 开启普通邮箱POP3和SMTP服务 使用QQ邮箱的话,需要开启POP3...laravel qq邮箱验证
参考文章 :Laravel自带SMTP邮件组件实现发送邮件(QQ、163、企业邮箱都可)
laravel5.6发送邮件功能实现&队列使用(基于数据库)开启普通邮箱POP3和SMTP服务
使用QQ邮箱的话,需要开启POP3和SMTP服务(QQ邮箱登录=》选择设置=》账户=》下拉找到下图)。
使用企业邮箱不用开启SMTP,因为企业邮箱自带,如果配置有问题去查一下是否关闭安全登录(企业邮箱)
开启方式如下:
选择开启POP3/SMTP服务 并生成授权码 类似下图
配置laravel 中的.env文件
MAIL_DRIVER=smtp MAIL_HOST=smtp.qq.com MAIL_PORT=465 MAIL_USERNAME=********@qq.com MAIL_PASSWORD=qq邮箱此处填写上图产生的授权码 MAIL_ENCRYPTION=ssl
配置 配置laravel config/mail.php文件
'from' => [ 'address' => env('MAIL_FROM_ADDRESS', '与.env文件相同@qq.com'), 'name' => env('MAIL_FROM_NAME', 'Example'), ],
如果不配置 则会报错
开始代码之旅
生成控制器
php artisan make::controller MailController
配置路由
Route::any('mail/send','MailController@send');
在app/Http/Controllers生成了一个MailController控制器,如下所示:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; class MailController extends Controller { // }
编辑上面控制器:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; class MailController extends Controller { // public function send() { $name = '我发的第一份邮件'; // Mail::send()的返回值为空,所以可以其他方法进行判断 Mail::send('emails.test',['name'=>$name],function($message){ $to = '1173914382@qq.com'; $message ->to($to)->subject('邮件测试'); }); // 返回的一个错误数组,利用此可以判断是否发送成功 dd(Mail::failures()); } }
Mail::send()需要传三个参数,第一个为引用的模板,第二个为给模板传递的变量(邮箱发送的文本内容),第三个为一个闭包,参数绑定Mail类的一个实例。
-
使用laravel进行邮箱验证
2018-12-20 21:40:43简单粗暴,直接上代码! .env: MAIL_DRIVER=smtp MAIL_HOST=smtp.163.com MAIL_PORT=465 MAIL_USERNAME=route@...MAIL_PASSWORD=password MAIL_ENCRYPTION=ssl ... //163邮箱发送邮件 public function mail(){ ...简单粗暴,直接上代码!
.env:
MAIL_DRIVER=smtp MAIL_HOST=smtp.163.com MAIL_PORT=465 MAIL_USERNAME=route@163.com MAIL_PASSWORD=password MAIL_ENCRYPTION=ssl
控制器层:
//163邮箱发送邮件 public function mail(){ $data=Crty::mailed(); // print_r($data);die; Mail::send("add_sort/shows",['user'=>$data->user],function($message){ $message->from("15******97@163.com","发件人"); $message->subject('message'); $message->to('收件人@qq.com'); }); } //缓存Cache public function register(Request $request){ if($request->isMethod('post')){ $data=$request->all(); $info=Crty::registered($data); // print_r($info);die; if($info){ return redirect('crty/mail'); } }elseif($request->isMethod('get')){ return view('add_sort/register'); } }
model层:
//注册model public static function registered($data){ // print_r($data);die; if(empty($data['user'])){ echo "用户名不能为空";die; } if(empty($data['pwd'])){ echo "密码不能为空";die; } if(empty($data['telphone'])){ echo "手机号码不能为空";die; } if(empty($data['email'])){ echo "邮箱不能为空";die; } $user=$data['user']; $telphone=$data['telphone']; $email=$data['email']; $arr=array( 'user'=>$data['user'], 'pwd'=>$data['pwd'], 'telphone'=>$data['telphone'], 'email'=>$data['email'] ); Mail::send("add_sort/shows",['user'=>$arr['user'],'telphone'=>$arr['telphone']],function($message){ $message->from("1**105****7@163.com","发件人"); $message->subject('message'); $message->to('11****@qq.com'); }); //设置缓存,用以想客户发送邮箱数据 $insert=DB::table('register')->insert($arr); return $insert; } //邮箱验证 public static function mailed(){ $data=DB::table('register')->where('id',25)->first(); return $data; }
view:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <table> <tr> <td>恭喜{{$user}},用户电话{{$telphone}}</td> </tr> </table> </body> </html>
-
Laravel注册实现邮箱验证
2019-08-17 19:17:02从 Laravel 5.7 起,Laravel 自带了邮箱验证的相关字段和功能 1.调整模型类 首先,调整下User 模型类,实现MustVerifyEmail接口 use Illuminate\Auth\MustVerifyEmail as MustVerifyEmailTrait; use ...目录
从 Laravel 5.7 起,Laravel 自带了邮箱验证的相关字段和功能
1.调整模型类
首先,调整下User 模型类,实现
MustVerifyEmail
接口use Illuminate\Auth\MustVerifyEmail as MustVerifyEmailTrait; use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract; class User extends Authenticatable implements MustVerifyEmailContract { use Notifiable, MustVerifyEmailTrait;
查看源码:
Illuminate\Auth\MustVerifyEmail 有如下三个方法 #检测用户 Email 是否已认证; public function hasVerifiedEmail(); #将用户标示为已认证 public function markEmailAsVerified(); #发送 Email 认证的消息通知,触发邮件 的发送 public function sendEmailVerificationNotification();
得益于 PHP 的 trait 功能,User 模型在 use 以后,即可使用以上三个方法
eg:
#可以看到用户是否验证,返回true或false dd(\Auth::user()->hasVerifiedEmail());
2,邮箱认证演示
使用laravel中间件来过滤用户的所有请求,如果用户未认证的话,就跳转到邮件认证提醒的页面中
Auth::routes(['verify' => true]);
// 1. 如果用户已经登录 // 2. 并且还未认证 Email // 3. 并且访问的不是 email 验证相关 URL 或者退出的 URL public function handle($request, Closure $next) { if($request->user() && ! $request->user()->hasVerifiedEmail() && ! $request->is('email/*', 'logout')){ // 根据客户端返回对应的内容 return redirect()->route('verification.notice'); } return $next($request); }
然后将其注册
在.env中将邮件先发送到 log 中:
MAIL_DRIVER=log
注册后,发现会跳转到验证页面,在log中找到邮件链接,即可激活后跳到主页,此时数据库中email_verified_at字段已不为空
3,源码
register控制器中
Illuminate\Foundation\Auth\RegistersUsers public function register(Request $request) { // 检验用户提交的数据是否有误 $this->validator($request->all())->validate(); // 创建用户同时触发用户注册成功的事件,并将用户传参 event(new Registered($user = $this->create($request->all()))); // 登录用户 $this->guard()->login($user); // 调用钩子方法 return $this->registered($request, $user) ?: redirect($this->redirectPath()); }
其中event(new Registered($user = $this->create($request->all())));
这里使用了 Laravel 的事件系统,触发了 Registered 事件
打开 app/Providers/EventServiceProvider.php 文件,此文件的 $listen 属性里 我们可以看到注册了 Registered 事件的监听器
protected $listen = [ Registered::class => [ SendEmailVerificationNotification::class, ], ];
打开 SendEmailVerificationNotification 类
public function handle(Registered $event) { // 如果 user 是继承于 MustVerifyEmail 并且还未激活的话 if ($event->user instanceof MustVerifyEmail && ! $event->user->hasVerifiedEmail()) // 发送邮件认证消息通知(认证邮件) { $event->user->sendEmailVerificationNotification(); } }
-
Laravel发送邮箱消息验证
2018-10-20 14:10:00Laravel发送邮箱消息验证 945的密码:umywcvkrfrytfeef ENV的配置如下: MAIL_DRIVER=smtpMAIL_HOST=smtp.qq.comMAIL_PORT=25MAIL_USERNAME=XXXXX@qq.comMAIL_PASSWORD=umywcvkrfrytfeefMAIL_... -
laravel 数据验证规则详解
2021-01-03 03:29:35'active_url' => '是否是一个合法的url,基于PHP的checkdnsrr函数,因此也可以用来验证邮箱地址是否存在', 'after:date' => '验证字段必须是给定日期后的值,比如required|date|after:tomorrow,通过PHP函数... -
laravel 项目实现邮箱验证功能
2018-08-28 14:43:19邮箱验证功能在很多网站都有用到,我的个人网站上也用到,邮箱验证需要用到邮件发送服务,Laravel 提供了非常简单的邮件发送 API,Laravel 项目实现邮件发送功能很简单,下面我开始介绍一下我的具体实现。... -
laravel 数据验证规则
2020-12-10 14:47:00‘是否是一个合法的url,基于PHP的checkdnsrr函数,因此也可以用来验证邮箱地址是否存在’, ‘after:date’ => ‘验证字段必须是给定日期后的值,比如required|date|after:tomorrow,通过PHP函数strtotime来验证’... -
邮箱验证 laravel框架
2018-09-19 18:11:05邮箱验证 邮箱验证功能实现具体步骤如下: 添加字段,为用户表添加两个字段,验证令牌 (verification_token) 和验证状态 (verified) 。 生成令牌。 用户登录后,检测是否验证过邮箱,没有则引导去验证。 使用...