Bagaimana cara mengirim email dengan html view di Framework Codeigniter ? disini saya akan menggunakan library email bawaan framework tersebut.

Pada tutorial sebelumnya saya mencoba untuk mengirim email dengan template html menggunakan file_get_content(), tetapi banyak shared hosting yang tidak membuka opsi php allow_url_fopen. Sehingga, fungsi file_get_contents tidak bisa berjalan.

Flownya sangat sederhana :

  • Load Libary Email
  • Konfigurasi email ( saya menggunakan smtp )
  • Load View Template Email di direktori View.

Lebih lengkapnya lihat fungsi dibawah :

public function sendEmail($to = '', $subject='', $tpl='', $data= array()) {

        $this->load->library('email');
        $config = array();
        $config['protocol'] = 'mail';
        $config['smtp_host'] = 'smtp.domain.anda';
        $config['smtp_user'] = 'smtp@domain.anda';
        $config['smtp_pass'] = 'password';
        $config['smtp_port'] = smtpport (465);

        $this->email->initialize($config);

        $this->email->set_newline("\r\n");
        $this->email->set_mailtype("html");
        $from_email = "pengirim@domain.com";

        //Load email library
        $this->email->from($from_email, 'Subject Pesan');
        $this->email->to($to);
        // subject email
        $this->email->subject($subject);
        
        // isi email
        $body = $this->load->view($tpl, $data, TRUE);

        $this->email->message($body);
        
        // kirim email
        if($this->email->send()){
            return true;
        } 
        return false;
 }

Yang harus diperhatikan :

$this->email->set_mailtype("html");

dikarenakan  email yang ingin dikirim formatnya adalah html maka email type yang harus diisi adalah html.

// menggunakan parameter ketiga menjadi true;
$this->load->view($tpl, $data, true);

Views pada codeigniter memiliki parameter ketiga, bila kita set menjadi true maka data yang dikembalikan akan menjadi string, sehingga tidak dirender melalui browser.

Dari fungsi diatas bisa kita panggil seperti :

$this->sendMail('email@tujuan.com',  'Judul Email', '/views/email/template_email', $data);

Simpel bukan, semoga bermanfaat.