Saturday, October 25, 2014

Mengirim Email Dengan Php Codeigniter Via Localhost

Gmail Icon : Mengirim Email Dengan Php Codeigniter Via Localhost

Beberapa hari lalu saya telah mempelajari cara membuat sintak untuk mengirim email dari localhost dengan menggunakan php framework codeigniter. Setelah beberapa waktu mengalami banyak kesalahan, namun akhirnya bisa juga. untuk kali ini saya akan berbagi kepada anda  tentang cara membuat sintaknya. Mungkin sebelum kita masuk ke praktik, berikut adalah beberapa spesifikasi alat-alat yang saya pakai :

  • Xampp 1.8.0 (php 5.4.4 + mysql)
  • Php framework codeigniter 2.1.4 (available codeigniter 2.2.x)
  • Library PhpMailer (download disini)

> Konfigurasi
Pada tahap ini ada beberapa hal yang harus anda atur terlebih dahulu.
  • konfigurasi php.ini
Php.ini : Mengirim Email Dengan Php Codeigniter Via Localhost

Keterangan : 
    • (lihat gambar di atas) .pertama buka terlebih dahulu file php.ini yang ada pada direktori D:\xampp\php .
    • Tekan tombol CTRL+F ,ketik "openssl" .
    • hapus komentar titik koma ( ; ) sehingga sintak yang awalnya :
;extension=php_openssl.dll

menjadi

extension=php_openssl.dll

    • Untuk lebih jelasnya anda bisa melihat gambar di atas.
php.ini

Keterangan :
    • Tekan CTRL+F .ketik "mail" .
    • Hapus komentar titik koma ( ; ) ,sehingga sintak yang awalnya :
; sendmail_path = "\"D:\xampp\sendmail\sendmail.exe\" -t"

menjadi

sendmail_path = "\"D:\xampp\sendmail\sendmail.exe\" -t"
    • Untuk lebih jelasnya anda bisa lihat gambar di atas.
  • konfigurasi sendmail.ini
Berikut adalah setelan dari file sendmail.ini . File sendmail.ini terdapat pada direktori D:\xampp\sendmail . Silahkan samakan untuk bagian setelan ini :


; configuration for fake sendmail

; if this file doesn't exist, sendmail.exe will look for the settings in
; the registry, under HKLM\Software\Sendmail

[sendmail]

; you must change mail.mydomain.com to your smtp server,
; or to IIS's "pickup" directory.  (generally D:\Inetpub\mailroot\Pickup)
; emails delivered via IIS's pickup directory cause sendmail to
; run quicker, but you won't get error messages back to the calling
; application.

smtp_server=smtp.gmail.com

; smtp port (normally 25)

smtp_port=465

; SMTPS (SSL) support
;   auto = use SSL for port 465, otherwise try to use TLS
;   ssl  = alway use SSL
;   tls  = always use TLS
;   none = never try to use SSL

smtp_ssl=auto

; the default domain for this server will be read from the registry
; this will be appended to email addresses when one isn't provided
; if you want to override the value in the registry, uncomment and modify

default_domain=gmail.com

; log smtp errors to error.log (defaults to same directory as sendmail.exe)
; uncomment to enable logging

error_logfile=error.log

; create debug log as debug.log (defaults to same directory as sendmail.exe)
; uncomment to enable debugging

;debug_logfile=debug.log

; if your smtp server requires authentication, modify the following two lines

auth_username=Mycekinfo@gmail.com
auth_password=RAHASIA

; if your smtp server uses pop3 before smtp authentication, modify the 
; following three lines.  do not enable unless it is required.

pop3_server=
pop3_username=
pop3_password=

; force the sender to always be the following email address
; this will only affect the "MAIL FROM" command, it won't modify 
; the "From: " header of the message content

force_sender=

; force the sender to always be the following email address
; this will only affect the "RCTP TO" command, it won't modify 
; the "To: " header of the message content

force_recipient=

; sendmail will use your hostname and your default_domain in the ehlo/helo
; smtp greeting.  you can manually set the ehlo/helo name if required

hostname=


Note : Setelah Selesai Konfigurasi Jangan Lupa RESTART Terlebih Dahulu XAMPP-nya.

> Library
Setelah selesai mengkonfigurasi, sekarang kita akan meletakan library PhpMailer yang sudah di download sebelumnya.

  • Pertama buka file RAR PhpMailer yang sudah di download.
phpmailer master

  • (Lihat pada gambar di atas) , Copy file class.phpmailer.php , class.smtp.php dan PHPMailerAutoload.php ke folder libraries yang ada pada CI di direktori application/libraries .Untuk lebih jelas lihat gambar di bawah.
libraries


>Sintak Controllers
Library sudah selesai di atur, sekarang saatnya masuk pada tahap penulisan sintak. sintak controllers di simpan dengan nama file mail.php di direktori application/controllers. berikut adalah sintaknya :


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 

class Mail extends CI_Controller { 
 
 public function __construct() { 
  parent::__construct(); 
    }
    
    public function index() {
  require_once(APPPATH.'libraries/PHPMailerAutoload.php');
        $mail = new PHPMailer();
        $mail->IsSMTP(); // we are going to use SMTP
        $mail->SMTPAuth   = true; // enabled SMTP authentication
        $mail->SMTPSecure = "ssl";  // prefix for secure protocol to connect to the server
        $mail->Host       = "ssl://smtp.gmail.com";      // setting GMail as our SMTP server
        $mail->Port       = 465;                   // SMTP port to connect to GMail
        $mail->Username   = "Mycekinfo@gmail.com";  // user email address
        $mail->Password   = "RAHASIA";            // password in GMail
        $mail->SetFrom('EmailTujuan@gmail.com', 'Cahya Dy');  //Who is sending the email
        $mail->AddReplyTo("EmailTujuan@gmail.com","Cahya Dy");  //email address that receives the response
        $mail->Subject    = "tester mail2";
        $mail->Body      = "<h1>Hallo, hanya memastikan saja mas :)</h1>";
        $mail->AltBody    = "coba coba";
        $destino = "EmailTujuan@gmail.com"; // Who is addressed the email to
        $mail->AddAddress($destino, "Cahya Dy");

        $mail->AddAttachment("");      // some attached files
        $mail->AddAttachment(""); // as many as you want
        if($mail->Send()) {
   $data["message"] = "Message sent correctly!";
        } else {
            $data["message"] = "Error: " . $mail->ErrorInfo;
        }
        $this->load->view('sent_mail.php',$data);
    }
}

>Sintak Views
Sintak view hanya berfungsi untuk menampilkan status mail, apakah mail terkirim atau tidak (error). Sintak views di simpan dengan nama file sent_mail.php di direktori application/views. Berikut adalah sintaknya :

<h4><?php echo $message; ?></h4>

Jika mail sukses terkirim, maka status yang muncul adalah "Message sent correctly!" ,tetapi jika email gagal terkirim (error), maka status yang muncuk adalah "Error : ........".
Mungkin email akan agak lama terkirim. tapi semua itu tergantung koneksi internet anda.
Sedikit Catatan : Untuk setelan drive itu tergantung kita menginstal xampp-nya di mana. Pada contoh di atas saya kebetulan menginstal xampp pada drive D.


 Artikel Ini Telah di perbaharui, lihat disini : http://www.kang-cahya.com/2015/10/membuat-fitur-kirim-email-dengan.html


Saya hanya seorang "newbie" yang baru bisa ngoding lohor kemarin.

17 komentar

engga bisa bisa ya, pdhal udah sama bgt pengaturannya dgn yg disebutkan. errornya selalu muncul SMTP connect() failed. T,T

coba screen shoot errornya, lalu kirim via fans page web ini

kang kalo muncul kaya gini kenapa ya ?
Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

xampp nya udah di configurasi belum ?

Sudah bisa kang, terim kasih banyak.

alhamdulilah kalau gitu, :)
semoga bermanfaat :)

wah kurang tau, coba tanya kang arip

om tau tanya dong ko punya saya error nya Error: SMTP connect() failed.
kira kira apanya yah


di sendmail sama php.ini nya udh saya configurasi

help nya om please

rekomendasi ikutin artikel ini : http://www.kang-cahya.com/2015/10/membuat-fitur-kirim-email-dengan-codeigniter-dan-phpmailer.html

Message: require_once(C:\xampp\htdocs\wait\application\libraries/PHPMailerAutoload.php): failed to open stream: No such file or directory

bang arif kalau salah na kaya gitu kenapa ya mohon bantuan nya

kira2 knpa ini ya gan? Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

yang ini sudah tidak work, artikel sudah di perbaharui di sini kang-cahya.com/2015/10/membuat-fitur-kirim-email-dengan.html

om error ,,tapi email kekirim..

2018-02-23 04:33:14 Connection: opening to ssl://smtp.gmail.com:465, timeout=50, options=array ( 'ssl' => array ( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true, ),)
2018-02-23 04:33:14 Connection: opened
2018-02-23 04:33:14 SMTP -> get_lines(): $data is ""
2018-02-23 04:33:14 SMTP -> get_lines(): $str is "220 smtp.gmail.com ESMTP 64sm2014534pgj.39 - gsmtp"
2018-02-23 04:33:14 SERVER -> CLIENT: 220 smtp.gmail.com ESMTP 64sm2014534pgj.39 - gsmtp
2018-02-23 04:33:14 CLIENT -> SERVER: EHLO localhost
2018-02-23 04:33:15 SMTP -> get_lines(): $data is ""
2018-02-23 04:33:15 SMTP -> get_lines(): $str is "250-smtp.gmail.com at your service, [125.165.142.225]"
2018-02-23 04:33:15 SMTP -> get_lines(): $data is "250-smtp.gmail.com at your service, [125.165.142.225]"
2018-02-23 04:33:15 SMTP -> get_lines(): $str is "250-SIZE 35882577"
2018-02-23 04:33:15 SMTP -> get_lines(): $data is "250-smtp.gmail.com at your service, [125.165.142.225]250-SIZE 35882577"
2018-02-23 04:33:15 SMTP -> get_lines(): $str is "250-8BITMIME"
2018-02-23 04:33:15 SMTP -> get_lines(): $data is "250-smtp.gmail.com at your service, [125.165.142.225]250-SIZE 35882577250-8BITMIME"
2018-02-23 04:33:15 SMTP -> get_lines(): $str is "250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH"
2018-02-23 04:33:15 SMTP -> get_lines(): $data is "250-smtp.gmail.com at your service, [125.165.142.225]250-SIZE 35882577250-8BITMIME250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH"

portnya coba ganti ke 587 jangan 465.

Artikel ini udah agak miss, saya sudah perbaharui disini : www.kang-cahya.com/2015/10/membuat-fitur-kirim-email-dengan.html


EmoticonEmoticon