Tutorial kirim email CodeIgniter menggunakan SMTP Gmail

Gambar ilustrasi

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, bukankah PHP sudah ada fungsi bawaan mail() yang bisa digunakan pada CodeIgniter?

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.

Saya rasa sudah cukup basa basinya, sekarang lanjut ke tutorial mengirim email dengan memanfaatkan SMTP Gmail.

1. Mengaktifkan Less Secure Apps Access/Akses aplikasi yang kurang aman

Sebelum menulis kode untuk mengirim email menggunakan SMTP Gmail, langkah awal yang harus kita lakukan adalah mengaktifkan less secure apps pada akun Google milik 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.

Berikut langkah-langkahnya:

Turn on less secure apps Turn On Less Secure Apps

Kita sudah berhasil mengaktifkan akses aplikasi yang kurang aman. Sekarang lanjut ke tahap berikutnya.

2. Membuat controller kirim email

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

Berikut langkah-langkahnya:

  • Buat controller baru bernama Send_email.php.
  • Lalu isi dengan kode di bawah ini:
<?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'   => 'passwordgmail',  // 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.';
        }
    }
}
  • Sesuaikan konfigurasi kode di atas seperti: smtp_user, smtp_pass, identitas pengirim, email tujuan, subject dan lain sebagainya sesuai kebutuhan.
  • Simpan controller tersebut.

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.

Email recieved Email CodeIgniter sudah diterima

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.

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.