Tutorial kirim email CodeIgniter menggunakan SMTP Gmail

Dalam membuat sebuah program aplikasi menggunakan CodeIgniter, suatu saat kita akan dihadapkan dengan fitur untuk mengirim email.

Fitur ini digunakan untuk berkomunikasi antara user satu dengan yang lainnya maupun antara user dengan sistem aplikasi itu sendiri.

Untuk membuat fitur pengiriman email pada CodeIgniter kita bisa memanfaatkan SMTP Gmail.

Mengapa menggunakan SMTP Gmail?

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.
  • Dan lain sebagainya.

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

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.

Membuat App Password Gmail

Google telah menghapus fitur “Less Secure Apps” sejak Mei 2022. Sebagai gantinya, kita perlu membuat App Password. Pastikan akun Google sudah mengaktifkan 2-Step Verification terlebih dahulu.

Buka https://myaccount.google.com/apppasswords, buat App Password baru, lalu gunakan password yang dihasilkan sebagai nilai smtp_pass — bukan password akun Google biasa.

Membuat controller kirim email

Pada tahap ini kita akan membuat sebuah controller baru untuk mengirimkan email menggunakan SMTP Gmail.

Berikut langkah-langkahnya:

1. Buat controller baru bernama Send_email.php dan isi dengan kode berikut:

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Send_email extends CI_Controller {
    /**
     * Kirim email dengan SMTP Gmail.
     *
     */
    public function index()
    {
      // Konfigurasi email
        $config = [
            'mailtype'  => 'html',
            'charset'   => 'utf-8',
            'protocol'  => 'smtp',
            'smtp_host' => 'smtp.gmail.com',
            'smtp_user' => 'email@gmail.com',  // Email Gmail
            'smtp_pass'   => 'apppassword',  // App Password Gmail
            'smtp_crypto' => 'ssl',
            'smtp_port'   => 465,
            'crlf'    => "\r\n",
            'newline' => "\r\n"
        ];

        // Load library email dan konfigurasinya
        $this->load->library('email', $config);

        // Email dan nama pengirim
        $this->email->from('no-reply@masrud.com', 'MasRud.com');

        // Email penerima
        $this->email->to('penerima@domain.com'); // Ganti dengan email tujuan

        // Lampiran email, isi dengan url/path file
        $this->email->attach('https://images.pexels.com/photos/169573/pexels-photo-169573.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940');

        // Subject email
        $this->email->subject('Kirim Email dengan SMTP Gmail CodeIgniter | MasRud.com');

        // Isi email
        $this->email->message("Ini adalah contoh email yang dikirim menggunakan SMTP Gmail pada CodeIgniter.<br><br> Klik <strong><a href='https://masrud.com/kirim-email-codeigniter/' target='_blank' rel='noopener'>disini</a></strong> untuk melihat tutorialnya.");

        // Tampilkan pesan sukses atau error
        if ($this->email->send()) {
            echo 'Sukses! email berhasil dikirim.';
        } else {
            echo 'Error! email tidak dapat dikirim.';
        }
    }
}

2. Sesuaikan smtp_user, smtp_pass (gunakan App Password Gmail), email pengirim, penerima, dan subject sesuai kebutuhan, lalu simpan.

Untuk menguji apakah kode yang kita buat dapat mengirimkan email atau tidak, silakan buka browser dan panggil controller tersebut.

http://localhost/projectname/index.php/send_email

Jika muncul pesan “Sukses! email berhasil dikirim.” dan pada email tujuan ada email masuk sesuai dengan yang kita kirimkan, maka kita sudah berhasil mengirimkan email menggunakan SMTP Gmail.

Contoh tampilan email masuk di Gmail yang dikirim melalui SMTP CodeIgniter.

Untuk mengirimkan email dari localhost, pastikan kita 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.

Kesimpulan dan penutup

Demikianlah tutorial mengirim email menggunakan SMTP Gmail pada CodeIgniter. Tutorial ini hanyalah contoh dasar, Anda dapat mengembangkannya menjadi lebih kompleks, seperti: multi recipient, multi attachment, kustom style email dan lain sebagainya sesuai dengan kebutuhan.