Membuat Full Notifikasi Kirim ke Gmail di Laravel 10 Mudah
1. Buat app password di https://myaccount.google.com/apppasswords?
namanya bebas
akan muncuk password random, save terlebih dulu
2. tambahkan di file .ENV
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=email_kalian@gmail.com
MAIL_PASSWORD=kode_app_password_tadi
MAIL_ENCRYPTION=null
MAIL_FROMADDRESS="email_kalian@gmail.com"
MAIL_FROM_NAME="${APP_NAME}"
3. buka file mail.php
pada bagian ini. tambahkan 2 baris bawah ini, totalnya seperti ini
'smtp' => [
'transport' => 'smtp',
'url' => env('MAIL_URL'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' => null,
'local_domain' => env('MAIL_EHLO_DOMAIN'),
'auth_mode' => null,
'verify_peer' => false,
4. buat controller
php artisan make:controller UserController
<?php
namespace App\Http\Controllers;
use App\Mail\UserMail;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Mail;
use Illuminate\Http\Request;
class UserController extends Controller
{
/**
* Get the authenticated User.
*
* @return \Illuminate\Http\JsonResponse
*/
public function index()
{
Mail::to('email_tujuan@gmail.com')->send(new UserMail());
return true;
}
}
5. bagian web.php, tambahkan baris ini
Route::get('/user/mail/send', [UserController::class, 'index']);
6. buat folder app/Mail. buat file UserMail.php
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class UserMail extends Mailable
{
use Queueable, SerializesModels;
protected $isSuccess, $logo;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct()
{
$this->logo = asset('img/logo.png');
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('lahiru@gmail.com', 'GenoTech')
->subject('Your Registration is Successful!!!')
->view('emails.user_email',['name'=>"Kasun", 'logo' => $this->logo]);
}
}
7. buat user_email.blade.php di dalam folder resources/view/emails
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<style>
body{
height: 750px;
margin: 2px;
padding: 2px;
font-family: Helvetica, Arial, sans-serif;
}
.button-container{
margin:40px 0;
}
#box{
width: 850px;
margin: 0 auto;
height:100%;
}
#header{
height: 200px;
width: 100%;
position: relative;
display: block;
border-bottom: 1px solid #504597;
}
.button{
background-color: #d60e0e;
border: none;
color: white !important;
padding: 10px 25px;
text-align: center;
text-decoration: none;
margin:auto;
font-size: 22px;
cursor: pointer;
border-radius: 10px;
}
#image {
width: 150px;
height: auto;
margin-top: 16px;
}
#rightbar {
width: 100%;
height: 560px;
padding: 0px;
}
.text-div{
font-size: 18px;
margin-bottom: 3px;
}
#footer {
clear: both;
height: 40px;
text-align: center;
background-color: #2d0f80;
margin: 0px;
padding: 0px;
color: white;
}
p, pre
{
font-size: 18px;
line-height: 1.4;
}
.heading{
color: #504597;
font-size: 24px;
}
</style>
</head>
<body>
<div id="box">
<div id="header">
<!-- <img id="image" src="{{ $logo }}"> -->
</div>
<div class="spacing"></div>
<div id ="rightbar">
<h1 class="heading"></h1>
<p> Hai {{$name}} </p>
<p>Mohon maaf (untuk tolak) Barang anda yg di pesan dengan kode pesanan telah di setujui/tolak
</p>
<p>Jika di tolak silahkan hubungi PRT untuk konfirmasi barang
</div>
</div>
</body>
</html>
anda bisa masukkan logo img (optional) ke dalam public folder
8. pada bagian config/mail.php
'mailers' => [
'stream' => [
'ssl' => [
'allow_self_signed' => true,
'verify_peer' => false,
'verify_peer_name' => false,
],
],
9. tes
http://localhost:8000/user/mail/send
pastikan sudah menjalankan
php artisan serve