Я хотел проверить подтверждение по электронной почте после регистрации для моего проекта.
Письмо Laravel не отправляется, также не отображается ошибка после клона от Gitlab
После клонаиз gitlab я обновил проект композитора, а также добавил .env файлы.Я настроил mail.php в config / mail.php
config / mail.php Конфигурация ниже:
'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'),
Я создал verifyEmail для моего проекта с помощью этой команды:
php artisan make:mail verifyEmail
Конфигурация 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');
}
}
.env Конфигурация файла
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myEmail@gmail.com
MAIL_PASSWORD=myPassword
MAIL_ENCRYPTION=tls
После завершения регистрации он будет перенаправлен на маршрут
Файл RegistersUsers Конфигурация
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());
}
web.php Код конфигурации маршрута ниже:
Route::get('/EmailVerification','Auth\RegisterController@verifyEmailFirst')-
>name('verifyEmailFirst');
Route::get('/verify/{email}/{verifyToken}','Auth\RegisterController@sendEmailDone')->name('sendEmailDone');
email.sendПросмотреть файл Код ниже:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Email Verification</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js">
</script>
</head>
<body>
<div class="container">
<h2 class="well text-center">Email Verification Link Below</h2>
<a href="{{ route('sendEmailDone',["email"=>$user->email,"verifyToken"=>$user->verifyToken]) }}" class="btn btn-info btn-block" target="_blank">Verify Email Button</a>
</div>
</body>
</html>
Что здесь не так?