Membuat Fitur Kirim Email pada Laravel – Salah satu fitur keren dari Framework Laravel adalah adanya fitur untuk mengirim email dengan mudah. Laravel sudah menyediakan fitur ini secara default pada saat kita pertama kali menginstall project Laravel.
Fitur kirim email pada Laravel sangat di butuhkan salah satunya pada saat kita membuat fitur reset password user pada Laravel. Dimana nantinya akan dikirimkan email konfirmasi reset password ke email Anda secara otomatis untuk mengubah password dan menginput password baru.
Kirim Email pada Laravel Menggunakan Gmail
Cara mudah untuk membuat fitur kirim email menggunakan gmail di laravel:
1. Persiapan Project Laravel
Disini saya menginstall laravel dengan nama project “laravelmail” dengan perintah seperti di bawah ini:
composer create-project --prefer-dist laravel/laravel laravelmail
2. Mengaktifkan Google Security App password
Pastikan untuk mengaktifkan pengaturan Google Security pada akun Gmail Anda. Caranya, login terlebih dahulu ke akun google lalu masuk ke halaman Google Account, lalu klik Security.
Scroll ke bawah sampai Anda menemukan bagian App password seperti gambar di bawah ini:
Silahkan Anda klik App password. Selanjutnya di bagian Select app pilih Other (Custom name).
Selanjutnya akan muncul isian nama aplikasi, isi dengan nama Laravel. Lalu klik Generate.
Anda akan mendapatkan 16 karakter password.
Password tersebut yang akan kita gunakan untuk configurasi MAIL_PASSWORD
pada file .env
project laravel Anda.
3. Kofigurasi File .env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=ari210393@gmail.com # diisi dengan email google anda yg akan dijadikan mail server
MAIL_PASSWORD='mkapiuqignjzcyoz' # diisi dengan App Password yang sudah di generate
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=ari210393@gmail.com # diisi dengan email google anda yg akan dijadikan mail server
MAIL_FROM_NAME="${APP_NAME}"
3. Membuat Mail Class
Untuk membuat Mail Class jalankan perintah berikut:
php artisan make:mail MailSend
Maka file dengan nama MailSend.php akan dibuat pada direktori app/mail/MailSend.php
Isi dari MailSend.php seperti di bawah ini:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class MailSend extends Mailable
{
use Queueable, SerializesModels;
public $details;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($details)
{
$this->details = $details;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->subject('Tutorial Laravel Mail | ayongoding.com')
->view('mailtemplate');
}
}
4. Menambahkan Route
Tambahkan dua buah route berikut pada direktori routes/web.php
:
Route::get('formemail', [KirimEmailController::class, 'index']);
Route::post('kirim', [KirimEmailController::class, 'kirim']);
Sehingga full kode route menjadi seperti di bawah ini:
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\KirimEmailController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::get('formemail', [KirimEmailController::class, 'index']);
Route::post('kirim', [KirimEmailController::class, 'kirim']);
5. Membuat Controller Kirim Email
Dengan perintah:
php artisan make:controller KirimEmailController
Isi dari KirimEmailController.php sebagai berikut:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Mail\MailSend;
use Illuminate\Support\Facades\Mail;
class KirimEmailController extends Controller
{
public function index()
{
return view('formemail');
}
public function kirim(Request $request)
{
$details = [
'nama' => $request->nama,
'website' => $request->website,
'komentar' => $request->komentar
];
Mail::to($request->email)->send(new MailSend($details));
return "Email telah dikirim!";
}
}
6. Membuat Blade View Template Email
File view template email berguna untuk desain tampilan email yang akan di kirim.
Buat file view baru dengan nama mailtemplate.blade.php
Isinya sebagai berikut:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Tutorial Laravel Mail | ayongoding.com</title>
</head>
<body>
<p>Hallo <b>{{$details['nama']}}</b> berikut ini adalah komentar Anda:</p>
<table>
<tr>
<td>Nama</td>
<td>:</td>
<td>{{$details['nama']}}</td>
</tr>
<tr>
<td>Website</td>
<td>:</td>
<td>{{$details['website']}}</td>
</tr>
<tr>
<td>Komentar</td>
<td>:</td>
<td>{{$details['komentar']}}</td>
</tr>
</table>
<p>Terimakasih <b>{{$details['nama']}}</b> telah memberi komentar.</p>
</body>
</html>
7. Membuat View Form untuk Kirim Email
Dengan nama file formemail.blade.php
File view ini akan menampilkan form untuk isian beberapa data dan kemana email akan dikirim.
Kodenya sebagai berikut:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Tutorial Laravel Mail | ayongoding.com</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-6">
<h3>Tinggalkan Balasan</h3>
<form method="post" action="/kirim">
@csrf
<div class="form-group">
<label>Nama Lengkap</label>
<input class="form-control" type="text" name="nama">
</div>
<div class="form-group">
<label>Website</label>
<input class="form-control" type="text" name="website">
</div>
<div class="form-group">
<label>Komentar</label>
<textarea class="form-control" name="komentar" rows="4"></textarea>
</div>
<div class="form-group">
<label>Alamat Email Saya</label>
<input class="form-control" type="text" name="email">
</div>
<div class="text-right">
<button type="submit" class="btn btn-primary">Kirim ke Email Saya</button>
</div>
</form>
</div>
</div>
</div>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</body>
</html>
8. Mengirim Email
Coba jalankan project laravel Anda dengan perintah:
php artisan serve
Langsung akses url localhost:8000/formemail
pada browser Anda.
Isikan data seperti gambar di atas kemudian klik tombol Kirim email.
Maka email akan dikirim ke alamat email yang Anda inputkan seperti gambar di bawah ini:
Sekian tutorial Membuat Fitur Kirim Email pada Laravel, artikel ini adalah sebagai dokumentasi pribadi saya sehingga bahasa dan penulisannya dibuat singkat.
Semoga bisa bermanfaat untuk Anda.
punya saya kok erorr ya mas