Mengirimkan email dengan codeigniter dan mailgun tidak sulit, anda cukup mengatur konfigurasi email yang akan anda kirim melalui mailgun. Panduan dibawah ini akan membantu anda untuk mengatur aplikasi yang dapat anda pergunakan untuk mengirimkan email dengan codeigniter dan mailgun.
BACA:
Apa itu Mailgun?
Mailgun adalah sebuah layanan atau servis yang menyediakan layanan SMTP untuk mengirimkan email. Mengapa kita membutuhkan SMTP MAILGUN? Terkadang kita membutuhkan untuk mengirimkan ribuan email newsletter atau promo produk ke member kita yang jumlahnya bisa mencapai ribuan atau bahkan puluhan ribu, dan jika anda menggunakan SMTP milik hosting anda atau shared hosting anda sendiri, pada umumnya hal ini dilarang dan resiko anda di suspend. Problem lain nya adalah ip server anda beresiko di blacklist oleh google, yahoo , dll. Sehingga dapat berakibat email yang anda kirimkan akan langsung masuk ke folder spam, atau bahkan tidak dapat terkirim. Hal ini tentunya buruk untuk bisnis, apalagi email dapat digunakan sebagai fitur registrasi atau recovery password pada website anda yang digunakan oleh member anda.
Dengan menyerahkan pengiriman email ke pihak ketiga yakni Mailgun, anda tidak perlu khawatir akan resiko blacklist tadi, bahkan berdasarkan pengalaman saya, menggunakan Mailgun sangat besar peluangnya untuk masuk inbox dan bukan spam folder.
Panduan Mengirimkan Email dengan Codeigniter dan Mailgun
1. Silahkan anda mendaftar di Mailgun.com dan kemudian login ke dalam akun anda. Di halaman dashboard, scroll kebawah dan cari Sandbox domain. Sandbox domain ini adalah tempat anda menguji mailgun anda, karena untuk menjalankan fitur mailgun secara penuh, anda harus mendaftarkan domain anda dan mengatur beberapa konfigurasi DNS yang mengarah ke Mailgun. Dan oleh sebab itu agar anda dapat mengetest mengirimkan email dari localhost pc anda, dapat menggunakan sandbox domain ini.
2. Setelah anda mengklik sandbox domain di langkah pertama tadi, maka anda akan diarahkan ke halaman berikutnya. Di halaman ini silahkan anda catat informasi detail SMTP yang nantinya anda gunakan untuk konfigurasi pengiriman email di codeigniter. Selanjutnya silahkan klik Manage Authorized Recipients.
3. Di halaman ini silahkan daftarkan email penerima anda, yang ditujukan utk pengetesan pengiriman email. Pada mode sandbox, hanya dapat mengirimkan email ke alamat yang telah didaftarkan terlebih dahulu.
4. Selanjutnya buat file email.php dan letakkan di folder application/config/. Copas kode dibawah ini:
<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); $config['mailtype'] = 'html'; $config['charset'] = 'utf-8'; $config['protocol'] = 'smtp'; $config['smtp_host'] = 'ssl://smtp.mailgun.org'; $config['smtp_port'] = 465; $config['smtp_user'] = 'postmaster@sandboxb5c86d3498084b77b.mailgun.org';//ini username anda. $config['smtp_pass'] = '625c0f13123e8d807';//ini password smtp anda. $config['smtp_timeout'] = '4'; $config['crlf'] = '\n'; $config['newline'] = '\r\n';
5. Buat file MY_Email.php dan letakkan di folder application/libraries/ . Copas kode dibawah ini:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); class MY_Email extends CI_Email { public function __construct($config = array()) { if (count($config) > 0) { $this->initialize($config); } else { $this->_smtp_auth = ($this->smtp_user == '' AND $this->smtp_pass == '') ? FALSE : TRUE; $this->_safe_mode = ((boolean)@ini_get("safe_mode") === FALSE) ? FALSE : TRUE; } log_message('debug', "Email Class Initialized"); } public function set_header($header, $value) { $this->_headers[$header] = $value; } }
6.Buat controller Kirim_email.php dan letakkan di application/controllers/ dan copas kode dibawah ini
<?php class Kirim_email extends CI_Controller { function __construct() { parent::__construct(); $this->load->library('session'); $this->load->helper('form'); } public function index() { $this->load->helper('form'); $this->load->view('v_email'); } public function kirimkan() { $from_email = "support@alexistdev.com"; $to_email = $this->input->post('email'); //Load email library $this->load->library('email'); $this->email->from($from_email, 'Alexistdev.com'); $this->email->to($to_email); $this->email->subject('Kirim Email Codeigniter'); $this->email->message('Anda menerima pesan ini karena sudah mengirimkan email dari codeigniter'); //Send mail if($this->email->send()) $this->session->set_flashdata("email_sent","Email Berhasil Dikirimkan."); else $this->session->set_flashdata("email_sent","Error ditemukan, periksa kembali konfigurasi anda!"); $this->load->view('v_email'); } } ?>
7. Buat file view v_email.php , letakkan di application/views dan copas kode dibawah ini:
<html> <head> <title> Send Email Codeigniter </title> </head> <body> <?php echo $this->session->flashdata('email_sent'); echo form_open('/Kirim_email/kirimkan'); ?> <input type = "email" name = "email" required /> <input type = "submit" value = "KIRIM MAIL"> <?php echo form_close(); ?> </body> </html>
8. Untuk menjalankannya silahkan akses localhost/namafolderanda/kirim_email atau jika anda sudah mengatur virtual host di pc anda, dapat mengaksesnya dengan contoh:servis.local/kirim_email
9. Masukkan alamat email dan kirimkan, kemudian cek ke dalam folder inbox email anda yang telah anda daftarkan tersebut.
Catatan Penulis
Sebenarnya banyak pilihan layanan SMTP diluar sana, akan tetapi saya memilih mailgun karenakan gratis 10.000 per bulannya. Walaupun boleh dibilang, mailgun agak sulit dalam pengaturan tapi sepertinya saya lebih senang menggunakan Mailgun. Banyak pilihan layanan SMTP yang bisa anda gunakan selain Mailgun, yakni Sendinblue, Smtp2Go, mailchimp, dll. Silahkan anda pilih sendiri sesuai kebutuhannya, tapi pada dasarnya metode diatas sama, hanya tinggal ganti aja konfigurasi di bagian application/config/email.php nya
Jika anda membutuhkan bantuan dan pertanyaan, silahkan isi di kolom komentar. Saya senang jika bisa berdiskusi bersama.