我想为我的项目注册后验证电子邮件验证。
从Gitlab克隆后,Laravel电子邮件未发送也未显示错误
从gitlab克隆后,我更新了项目编辑器并添加了.env文件。
我在以下config / mail.php
config / mail.php配置中配置了mail.php:
str[2], str[3],
我使用以下命令为我的项目创建了verifyEmail:
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'myEmail@gmail.com'),
'name' => env('MAIL_FROM_NAME', 'My Name'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MyEmail@gmail.com'),
'password' => env('MyPassword'),
php artisan make:mail verifyEmail
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\User;
class VerifyEmail extends Mailable
{
use Queueable, SerializesModels;
public $user;
public function __construct(User $user)
{
return $this->user = $user;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('email.sendView');
}
}
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Support\Str;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Mail;
use App\Mail\VerifyEmail;
class RegisterController extends Controller{
use RegistersUsers;
protected $redirectTo = '/home';
public function __construct()
{
$this->middleware('guest');
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'verifyToken'=>'string',
]);
}
protected function create(array $data){
$user = User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'verifyToken'=>Str::random(40),
]);
$thisUser = User::findOrFail($user->id);
$this->sendEmail($thisUser);
return $user;
}
/* Verification Email Send Start */
public function sendEmail($thisUser)
{
Mail::to($thisUser['email'])->send(new VerifyEmail($thisUser));
}
/* Verification Email Send End */
public function sendEmailDone($email,$verifyToken)
{
return $email." - ".$verifyToken;
}
public function verifyEmailFirst()
{
return view('email.verifyEmailFirst');
}
}
注册完成后,它将重定向到路线
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myEmail@gmail.com
MAIL_PASSWORD=myPassword
MAIL_ENCRYPTION=tls
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
return redirect()->route('verifyEmailFirst');
return $this->registered($request, $user)
?: redirect($this->redirectPath());
}
Route::get('/EmailVerification','Auth\RegisterController@verifyEmailFirst')-
>name('verifyEmailFirst');
Route::get('/verify/{email}/{verifyToken}','Auth\RegisterController@sendEmailDone')->name('sendEmailDone');