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.
Comments