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
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.
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.
- (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.
>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
engga bisa bisa ya, pdhal udah sama bgt pengaturannya dgn yg disebutkan. errornya selalu muncul SMTP connect() failed. T,T
BalasHapuscoba screen shoot errornya, lalu kirim via fans page web ini
Hapuskang kalo muncul kaya gini kenapa ya ?
BalasHapusError: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
pakai port berapa gan ?
Hapusxampp nya udah di configurasi belum ?
BalasHapusSudah bisa kang, terim kasih banyak.
Hapusalhamdulilah kalau gitu, :)
Hapussemoga bermanfaat :)
Apanya kang yg di perbaiki ?
Hapuswah kurang tau, coba tanya kang arip
Hapusom tau tanya dong ko punya saya error nya Error: SMTP connect() failed.
BalasHapuskira 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
HapusMessage: require_once(C:\xampp\htdocs\wait\application\libraries/PHPMailerAutoload.php): failed to open stream: No such file or directory
BalasHapusbang 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
BalasHapusloe udh bisa gan ?
Hapusyang ini sudah tidak work, artikel sudah di perbaharui di sini kang-cahya.com/2015/10/membuat-fitur-kirim-email-dengan.html
Hapusom error ,,tapi email kekirim..
BalasHapus2018-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.
HapusArtikel ini udah agak miss, saya sudah perbaharui disini : www.kang-cahya.com/2015/10/membuat-fitur-kirim-email-dengan.html
Posting Komentar