Oke, kali ini saya ingin membagikan cara setting menggunakan fasilitas email atau mailer atau smfp pada Yii2 dengan menggunakan email Gmail kita, maka yang harus kita lakukan yaitu setting script SMTP pada Yii2 yang digunakan. Berikut langkah untuk setting SMTP Yii2

Mengapa menggunakan SMTP Gmail, bukankah PHP sudah ada fungsi bawaan mail() yang bisa digunakan pada Yii2?

Sebenarnya bisa saja menggunakan fungsi mail() bawaan PHP, akan tetapi fungsi ini memiliki banyak kekurangan sehingga kurang efektif digunakan.

Berikut adalah kekurangan fungsi mail() bawaan PHP:

  • Ada sebagian hosting yang menonaktifkan fungsi mail() sehingga apabila kita menggunakan fungsi ini maka kita tidak akan bisa mengirimkan email.
  • Setiap layanan hosting pasti ada batas jumlah pengiriman email setiap jamnya.
  • Proses pengiriman email dengan fungsi mail() tergolong lambat.

Sedangkan jika kita mengirimkan email menggunakan SMTP Gmail, semua kekurangan yang ada pada fungsi mail() dapat kita atasi dengan mudah.

Dengan memanfaatkan SMTP Gmail, sebenarnya kita menggunakan server email milik Google untuk mengirimkan email langsung dari aplikasi yang kita buat sehingga email tersebut lebih cepat sampai ke penerima.

Sekarang lanjut ke tutorial mengirim email dengan memanfaatkan SMTP Gmail.

1. Mengaktifkan Less Secure Apps Access

Sebelum kita menulis kode untuk mengirim email menggunakan SMTP Gmail, langkah awal yang harus kita lakukan adalah mengaktifkan less secure apps pada akun Google kita.

Hal ini bertujuan agar aplikasi yang kita buat dapat mengakses server Gmail sehingga dapat mengirimkan email. Tanpa melakukan hal ini kita tidak akan bisa mengirimkan email melalui SMTP Gmail.

Berikut langkah-langkahnya:

  • Silakan login ke akun google kamu, kemudian masuk ke fitur Less secure app access.
  • Lalu ubah status Allow less secure apps: OFF menjadi “ON” seperti pada gambar di bawah ini.
  • Jika telah mengaktifkan 2-Step Verification (sangat disarankan menggunakan fitur ini) seperti pada gambar di bawah ini. Maka silakan menggunakan fasilitas App passwords agar lebih aman dalam penggunaan akun gmail tersebut.
  • Kemudian pada pilihan “Select app” pilih “Other (Custom Name)” dan isi sesuai nama aplikasi yang diinginkan, semisal “Aplikasi Yii2 Saya” dan klik Generate maka akan muncul seperti gambar berikut
  • Kode yang diblock kuning merupakan password untuk email.

2. Mengaktifkan Fitur IMAP Gmail

  • Silakan login ke akun gmail kamu, kemudian masuk ke menu Settings >> Forwarding and POP/IMAP.
  • Lalu pada bagian IMAP access ubah status Disable IMAP menjadi “Enable IMAP”, konfigurasi lengkap seperti pada gambar di bawah ini.

3. Konfigurasi Mailer SMTP Yii2

Pada tahap ini kita akan mengubah konfigurasi mailer .

Berikut langkah-langkahnya:

  • Silakan ubah konfigurasi 'mailer' yang terdapat pada file /common/config/main.php (yii2 advanced) atau /config/web.php (yii2 basic)
  • Lalu sesuaikan configurasi nya seperti berikut:
'mailer' => [
    'class'     => 'yii\swiftmailer\Mailer',
    'viewPath'  => '@common/mail', // untuk basic @app/mail
    'transport' => [
        'class'      => 'Swift_SmtpTransport',
        'host'       => 'smtp.gmail.com',
        'username'   => 'email@gmail.com',

        // Jika menggunakan email gmail.com
        // gunakan sandi aplikasi
        // https://support.google.com/accounts/answer/185833
        'password'   => '***',
        'port'       => 465, // 465|587
        'encryption' => 'ssl', // ssl|tls
    ],

    // send all mails to a file by default. You have to set
    // 'useFileTransport' to false and configure a transport
    // for the mailer to send real emails.
    'useFileTransport' => false,
], 
  • Sesuaikan konfigurasi kode di atas seperti: username, passwordsesuai kebutuhan. Untuk password sangat disarankan menggunakan App passwords sesuai dengan tutorial pada nomor 1 di atas.

4. Implementasi Kirim Email

Berikut adalah script yang dapat digunakan untuk mengirimkan email dari Yii2:

$sendEmail = Yii::$app->mailer
    ->compose(
        ['html' => 'template-html'], // berarti menggunakan path 'viewPath' (sesuai config) dengan file template-html.php
        $params // array $params = [] data yang dikirim ke view template
    )
    ->setTo('email-tujuan@domain.com')
    ->setFrom(['no-reply@diecoding.com' => 'Die Coding'])
    ->setSubject('Kirim Email dengan SMTP Gmail Yii2 | Die Coding')
    ->send();

return $sendEmail; // bool, jika true berarti email berhasil dikirimkan
  • Sesuaikan kode di atas seperti: setTo() , setFrom() , setSubject(), $paramsdan template sesuai kebutuhan.

Untuk mengirimkan email dari localhost, pastikan kamu memiliki koneksi internet, tanpa koneksi internet email tidak akan terkirim dan akan muncul error. Selain itu pastikan tidak ada antivirus, firewall atau aplikasi lain yang memblokir port 465.