Monday, January 11, 2016

Mengirim Email via Localhost di Codeigniter




Assalamu'alaykum~ kembali lagi dengan tutorial codeigniter bersama saya! Semoga ini bisa bermanfaat. Aamiin.

Kali ini mau share gimana caranya ngirim email via form di codeigniter mode localhost. Karena masih belum dicoba via hosting, mungkin errornya akan beda sama yang hostingan :) Oiya tutorial ini konsepnya buat ngirim email semacam feedback atau komentar. Jadi email tujuannya udah pasti.

Senjata yang saya pakai:
1. XAMPP Apache 2.0
2. PHP ver 5.3.5
3. Codeigniter 2.2.0
4. Sublime Text Editor
5. Gmail Account
6. Windows 7 

Filenya bisa download di: http://yukiyagami.16mb.com/kom.zip 

Oke.. langsung aja... pertama pastiin web servermu udah jalan dan oke. Terus copy codeigniter di directory rootmu. Tempat saya nama folder.nya 'kom'. Silakan nanti disesuaikan.

Karena enggak pake database jadi enggak perlu konfigurasi database dan model. Kita bisa langsung buat controller, nama filenya pengatur.php. Prinsipnya dia cuma manggil viewnya doank. Tapi jangan lupa panggil helper url ya..


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Pengatur extends CI_Controller {
public function index()
{
$this->load->helper('url');
$this->load->view('index');
}
}
view raw
pengatur.php hosted with ❤ by GitHub




Lalu buat view, namanya index.php. Dia prinsipnya membuat form yang nanti akan diisi. Ini format form-nya:


<form method="POST" action="<?php echo site_url(); ?>/email">
Nama: <br>
<input name="nama" value="" placeholder="Nama Anda" required /><br>
Email: <br>
<input type="email" name="email" placeholder="xxx@gmail.com" required /><br>
Subjek: <br>
<input type="text" name="subjek" placeholder="Subjek" required /><br>
Pesan: <br>
<textarea name="pesan" required placeholder="Pesan" class="form-control"></textarea><br>
<input type="submit" value="Kirim" />
</form>
view raw
index.php hosted with ❤ by GitHub




Pastikan helper url udah diload supaya bisa pakai php site_url(). Lalu perhatikan actionnya. Isi form itu akan dikirim ke http://localhost/kom/index.php/email. Jadi kita harus buat controller lagi yang namanya email.php. Di sini konfigurasi emailnya ditulis.


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Email extends CI_Controller {
function index()
{
$email = $this->input->post('email');
$nama = $this->input->post('nama');
$subjek = $this->input->post('subjek');
$pesan = $this->input->post('pesan');
$url = $_SERVER['HTTP_REFERER'];
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'email_mu@gmail.com', //isi dengan gmailmu!
'smtp_pass' => 'password_email_mu', //isi dengan password gmailmu!
'mailtype' => 'html',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$this->email->from($email);
$this->email->to('email_mu@gmail.com'); //email tujuan. Isikan dengan emailmu!
$this->email->subject($subjek);
$this->email->message($pesan);
if($this->email->send())
{
echo 'Email sent. <a href="'.$url.'">KEMBALI</a>';
}
else
{
show_error($this->email->print_debugger());
}
}
}?>
view raw
email.php hosted with ❤ by GitHub



Selanjutnya coba jalankan. Buka http://localhost/kom/index.php/pengatur, lalu isikan data dan klik kirim. 

Akan muncul error berbunyi: unable to connect to ssl://smtp.googlemail.com:465 (Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?)



Untuk mengatasi itu, pertama matikan apache. Dimatikan aja hlo, bukan diuninstall
Cara mematikan service apache salah satunya lewat control panel. Buka Control Panel--> Administrative Tools--> Services. Cari Apache kemudian pilih stop.

Setelah service apache berhenti, copy file libeay32.dll dan ssleay32.dll yang ada di folder \xampp\php\, kemudian paste di folder \xampp\apache\bin\. Pilih replace file. Lalu buka file php.ini yang ada di folder \xampp\php\. Jika tidak ada mungkin file php.ini mu ada di C:\Windows. Coba cari ya..

Dalam file php.ini, ubah ;extension=php_openssl.dll menjadi extension=php_openssl.dll (dihilangkan tanda titik komanya). Jika enggak ada tinggal tambahkan extension=php_openssl.dll pada baris berakhir file php.ini. Jangan lupa disave!



Hidupkan lagi service apache.
Sekarang reload http://localhost/kom/index.php/pengatur. Akan muncul error lagi: Failed to authenticate password.....



Yup kalau udah error yang itu berarti tinggal 1 step lagi ^_^! Login ke akun gmail.mu yang tadi ditulis di file email.php baris ke 17. Lalu klik link ini: https://www.google.com/settings/security/lesssecureapps dan pilihEnable

Reload http://localhost/kom/index.php/pengatur lagi. InsyaAllah udah fix!




Coba cek emailmu. Di inbox akan ada email baru 'atas nama' emailmu sendiri! Nah di sini yang sebenarnya masih aneh, kita akan menerima email dari email yang kita tulis di email.php baris 17, bukan dari email yang ditulis di form. Alamat email yang tertulis di form akan muncul di bagian dalam email ketika dibuka. jadi hati-hati waktu coba membalas ya...



Begitulah! Alhamdulillah selesai :) Ini sedikit tutorial. Kalau kamu ada kritik, saran, dan lain-lain boleh langsung dilayangkan ke komentar atau email saya: yukiyagami222@gmail.com.

Sumber : http://yukiyagami.blogspot.co.id/2014/11/mengirim-email-via-localhost-di.html