MASIGNASUKAv102
4922683097822459718

Cara Kirim Email Laravel dengan SMTP Gmail

Cara Kirim Email Laravel dengan SMTP Gmail
Add Comments
2/07/2021

Halo teman-teman, pada kesempatan kali ini saya akan membagikan tutorial tentang Laravel send email Gmail . Tutorial ini sangat berguna untuk teman-teman yang ingin membuat contact form di situs kalian yang menggunakan framework laravel.

Untuk cara pembuatannya bisa kita implementasikan di aplikasi yang laravel yang sudah jadi atau bisa juga teman-teman install dulu laravelnya, ada banyak tutorial di google tentang cara install laravel.

Baca Juga : Cara membuat Migration Pada Laravel

1. Buat Controller

Jika teman-teman sudah install laravelnya atau yang sudah ada kita harus terlebih dahulu membuat controller untuk menangani request http. Untuk itu kita akan membuatnya di CMD (Command prompt) dan menulis kode seperti dibawah ini. Perintah dibawah ini akan membuat file di

SendGmailController/app/Http/Controllers

php artisan make:controller SendMailController

Jika sudah, kita akan memiliki metode make index() untuk membuat file view dimana kita akan membuat form kontak. Silahkan buat file form kontak di resource/views/sendgmail.blade.php.

app/Http/Controllers/SendGmailController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SendGmailController extends Controller
{
    function index()
    {
     return view('sendgmail');
    }
}

2. Buat Formulir Kontak

Sekarang kita akan membuat file view untuk menampilkan Contact Form di halaman web. Silahkan copy tampilan Contact Form dibawah ini:

<!doctype html>
<html lang="en">
<head>
  <!-- Required meta tags -->
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

  <!-- Bootstrap CSS -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">

  <style type="text/css">
   .box{
    width:600px;
    margin:0 auto;
    border:1px solid #ccc;
  }
  .has-error
  {
    border-color:#cc0000;
    background-color:#ffff99;
  }
</style>
<title>Contact Form Laravel- OMJUAN.COM</title>
</head>
<body>
  <br />
  <br />
  <br />
  <div class="container box">
   <h3  class="mt-5" align="center">Contact From Laravel<br/><a href="https://www.omjuan.com/" title="OMJUAN">WWW.OMJUAN.COM</a></h3><br />
   @if (count($errors) > 0)
   <div class="alert alert-danger">
     <button type="button" class="close" data-dismiss="alert">×</button>
     <ul>
      @foreach ($errors->all() as $error)
      <li>{{ $error }}</li>
      @endforeach
    </ul>
  </div>
  @endif
  @if ($message = Session::get('success'))
  <div class="alert alert-success alert-block">
    <button type="button" class="close" data-dismiss="alert">×</button>
    <strong>{{ $message }}</strong>
  </div>
  @endif
  <form method="post" action="{{url('sendgmail/send')}}">
    @csrf
    <div class="form-group">
     <label>Nama</label>
     <input type="text" name="name" class="form-control" value="" />
   </div>
   <div class="form-group">
     <label>Email</label>
     <input type="text" name="email" class="form-control" value="" />
   </div>
   <div class="form-group">
     <label>Pesan</label>
     <textarea name="message" class="form-control"></textarea>
   </div>
   <div class="form-group">
     <input type="submit" name="send" class="btn btn-primary" value="Kirim">
   </div>
 </form>
</div>
<!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
</body>
</html>

Diatas merupakan tampilan Contact Form yang menggunakan Bootstrap 4. Laravel menggunakan template blade untuk menulis code script diantara code html. Jadi kita dapat melihat code pesan kesalahan validasi dan pesan pengirim formulis sukses dihalaman tersebut. Setelah pengguna sudah mengisi semua formulir maka akan terkirim ke send() metode file controller SendMailController.php seperti dibawah ini.

<form method="post" action="{{url('sendgmail/send')}}">

3. Atur Rute

Pada bagian ini kita akan mengatur rute untuk masing-masing metode yang telah kita gunakan. Jadi disini kita membuat dua metode index() dan send() di kontroller.

Untuk kita kita harus pergi ke routes/web.php untuk mengatur rute.

<?php

Route::get('/sendgmail', 'SendGmailController@index');
Route::post('/sendgmail/send', 'SendGmailController@send');

?>

4. Buat Kelas Mailable

Sebelum membuat kelas dapat terkirim kita harus konfigurasi email di .env terlebih dahulu, jika kalian yang belum tau Cara setting SMTP Gmail silahkan baca dulu

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=exmaple@gmail.com
MAIL_PASSWORD=passwordkamu
MAIL_ENCRYPTION=tls

Jika sudah, kita sudah bisa membuat kelas mailable untuk itu silahkan buka CMD lalu ketikan pertintah berikut dibawah ini:

php artisan make:mail SendGmail

Perintah diatas akan membuat file SendGmail di App\Mail\SendGmail.php. Dikelas ini kita harus mendefenisikan satu property dengan nama $data, dengan menggunakan propety ini kita dapat mengirim data pada saat membuat instance baru di kelas ini.

App\Mail\SendGmail.php 

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class SendGmail extends Mailable
{
    use Queueable, SerializesModels;
    public $data;
    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($data)
    {
        $this->data = $data;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from('example@omjuan.com')->subject('Pesan Baru')->view('dynamic_email_template')->with('data', $this->data);
    }
}

?>

Pada kode diatas bisa kita lihat metode build(), yang membangun pesan untuk dikirim. form() - metode ini ini digunakan untuk kita menentuka email. subject() - metode ini kita gunakan untuk mendefisinikasn subject. tampilan email() - Dengan metode ini kita dapat mengambil tampilan konten dari file tampilan yang telah diletakan di bawan email. with()- ini adalah metode yang digunakan untuk mengirim data ke file view, sehingga kita dapat membuat konten body yang dimanis.

5. Buat file View untuk Badan Email

Silahkan buat file tampilan di dynamic_email_template.blade.php di resorces/views

resource/views/dymanic/dynamic_email_template.blade.php

<p> Hai, perkenalkan saya{{$ data ['name']}} </p>
<p> Saya ingin bertanya{{$ data ['message']}}. </p>
<p> Terimakasih. </p>

6. Buat Kirim () Kontroller

Langka terakhir untuk mengirim pesan ke email dilaravel, silah copy code dibawah ini, lalu letakan di :

app\Http\Controllers\SendGmailController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\SendGmail;

class SendGmailController extends Controller
{
    function index()
    {
     return view('sendgmail');
    }

    function send(Request $request)
    {
     $this->validate($request, [
      'name'     =>  'required',
      'email'  =>  'required|email',
      'message' =>  'required'
     ]);

        $data = array(
            'name'      =>  $request->name,
            'message'   =>   $request->message
        );

     Mail::to('example@omjuan.com')->send(new SendGmail($data));
     return back()->with('success', 'Thanks for contacting us!');

    }
}

?>

7. Selesai

Oke teman-teman sekian dari saya tentang Cara Kirim Email Laravel dengan SMTP Gmail, semoga artikel ini dapat bermanfaat untuk teman-teman semua.

OMJUAN.COM

Situs penyedia tutorial programming online.