Dalam CodeIgniter disediakan  library yang mungkin akan sangat berguna dalam pembuatan web yang memerlukan interaksi dengan user seperti pendaftaran, pengiriman notifikasi ke user, dsb, yaitu library class Email.php

Tentu saja sebelum mulai, harus diinisialisasi dulu dengan

$this->load->library('email');


Sebelum bisa digunakan, kita harus menseting email preference yang akan dipakai. Sedikitnya ada 17 preference berbeda yang ada buat kamu yang bisa menentukan bagaimana email kamu dikirim. Kamu bisa menset preference itu secara manual dengan variable config atau juga secara otomatis dengan menyimpan settingnya di sebuah file.

Untuk mensetting secara manual, semua setting yang kamu perlukan kamu simpan di dalam satu variabel array $config dan kamu panggil dengan perintah initialize dari objek email. Seperti contoh di bawah ini :

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);

Namun jika ada nilai preference yang tidak kamu set, maka dia akan menggunakan nilai defaultnya.

Jika kamu lebih suka menaruh konfigurasi dalam satu tempat dan hanya tinggal dipanggil saat diperlukan, maka kamu bisa menyimpannya dalam file config. Hanya dengan buat file dengan nama email.php lalu isi dengan konfigurasi yang ada isi tadi. Kemudian simpan file itu di path application/config/email.php. Jika disimpan di file, maka konfigurasi akan dipanggil secara otomatis dan TIDAK perlu memakai fungsi

$this->email->initilize();

Sekarang langsung ke contoh fungsi. Berikut ini saya coba tulis semua metode pengiriman email dari library email.php

Pertama, dengan SMTP

function send_smtp()
{
	$this->load->library('email');
	$config['protocol'] = 'mail';
	$config['smtp_host'] = 'smtp.gmail.com';
	$config['smtp_port'] = 465;
	$config['smtp_user'] = 'qorianku@gmail.com';
	$config['smtp_pass'] = '1234567890';
	$config['priority'] = 1;
	$config['mailtype'] = 'text';
	$config['charset'] = 'utf-8';
	$config['wordwrap'] = TRUE;
	$this->email->initialize($config);
	$this->email->from('qorianku@gmail.com', 'Deka dari gmail');
	$this->email->to('qorianku@yahoo.com.sg');
	//$this->email->cc('deka@somemail.com');
	//$this->email->bcc('them@their-example.com');

	$this->email->subject('Email Test subject');
	$this->email->message('Testing the email class CodeIgniter');

	$this->email->send();
	echo $this->email->print_debugger();
}

Kedua, dengan MAIL

function sendmail()
{
	$this->load->library('email');
	echo "testing sending email with mail method".
	$config['protocol'] = 'mail';
	$config['mailtype'] = 'text';
	$config['charset'] = 'utf-8';
	$config['wordwrap'] = TRUE;
	$this->email->initialize($config);
	$this->email->from('qorianku@gmail.com', 'Deka dari gmail');
	$this->email->to('qorianku@yahoo.com.sg');
	//$this->email->cc('xcho85@gmail.com');
	//$this->email->bcc('them@their-example.com');

	$this->email->subject('Email Test subject');
	$this->email->message('Testing the email class CodeIgniter dengan mail');

	$this->email->send();
	echo $this->email->print_debugger();
}

Ketiga, dengan SENDMAIL

function sendsendmail()
{
	$this->load->library('email');
	echo "testing sending email with sendmail method".
	$config['protocol'] = 'sendmail';
	$config['mailtype'] = 'text';
	$config['charset'] = 'utf-8';
	$config['wordwrap'] = TRUE;
	$this->email->initialize($config);
	$this->email->from('qorianku@gmail.com', 'Deka dari gmail');
	$this->email->to('qorianku@yahoo.com.sg');
	//$this->email->cc('xcho85@gmail.com');
	//$this->email->bcc('them@their-example.com');

	$this->email->subject('Email Test subject');
	$this->email->message('Testing the email class CodeIgniter dengan sendmail');

	$this->email->send();

	echo $this->email->print_debugger();
}

Ketiganya sudah saya coba dan berhasil, namun pada metode smtp aku alami rada susah, cuma berhasil pada kali pertama coba saja. selanjutnya gagal dengan error broken pipe.

17 Responses to “Bikin Send email dengan CodeIgniter”

  1. xcho says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    mas, bedanya SMTP. MAIL, dan SEND MAIL pa tow? ak mau minta saran , seumpama aplikasi tak jalankan lewat localhost. ak pake fungsi SMTP/MAIL/SENDMAIL?
    Dan, seumpama aplikasi sya tdi tak upload ke hostingan, ak pake yg mn mas? Perlu konfigurasi mna saja?
    Mohon pencerahannya………….

  2. yohanes says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    haloo saya ingin nanya ni saya pake ci juga cuma koq status messagenya kesent ke email yg dituju tapi bingungnya emailnya tidak sampai2, mohon pencerahannya.

  3. qorianku says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    mas yohanes make metode yang mana? sendmail? mail? ato dengan smtp?
    kalo misalnya udah ke sent tapi belum sampe bisa juga karena hosting anda di blok oleh yahoo, atau juga dianggap spam.

    coba dikirimkan ke email lain, misal gmail, atau email kantor.

    silahkan mencoba

  4. Rany says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    mas….
    mo nanya…. masih ga mudeng neh….
    jadi fuction2 mail, sedmail, smtp itu di buat di libraries-nya php gt?

    tq yah

  5. qorianku says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    function2 diatas itu adalah contoh function yang siap pakai di class controller kamu.. jadi tinggal pake aja..

    soalnya di libraries CI sudah disiapkan 3 protocol itu. tinggal di pilih mana yang akan dipake, sesuai kondisi server hosting anda.
    contohnya, jika server hosting anda adalah windows server, maka kamu gak bisa make protocol sendmail,
    karena perintah sendmail adanya cuma di linux system.

    semoga membantu

  6. Rany says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    ooooo gitu……..

    mas……..
    tq yahhhhhhhh
    udah bisa……
    tapi ada sedikit yang menggantung
    akuw pake server kantor bisa……
    tapi kalo buat gmail jadi pengirimnnya ga bisa….
    akuw udah ubah:
    1. SMTPSecure = “ssl”;
    2. ['smtp_port'] = 465;
    3. extension=php_openssl.dll dihilangin tanda ; nya

    juga udah……kurang apa yah?
    tulisannya:
    Warning: fsockopen() [function.fsockopen]: SSL operation failed with code 1. OpenSSL Error messages: error:140770FC:SSL routines:func(119):reason(252) in C:\wamp\www\Project1\class.smtp.php on line 122

    Warning: fsockopen() [function.fsockopen]: Failed to enable crypto in C:\wamp\www\Project1\class.smtp.php on line 122

    Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:25 (Unknown error) in C:\wamp\www\Project1\class.smtp.php on line 122
    Message was not sent

    Mailer Error: Language string failed to load: connect_host

    mohon pencerahannya mas….

  7. qorianku says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    hallo sori lama ga bisa bales mbak rani
    kebanyakan kerjaan kantor.. gak abis2 :( (
    ini aja baru bisa ngecek :)

    kalo ta liat2 mbak nya pake phpmailer ya.. bukan CI.

    kalo gitu coba langkah2 ini :

    1 Download dan extract PHPMailer
    2 buat file email.php
    3 kopi paste kode dibawah ini:
    < ?
    include("class.phpmailer.php");

    $mail=new PHPMailer();
    $mail->IsSMTP(); // ngeset SMTP$mail->SMTPAuth = true; // mengaktifkan SMTP authentication

    $mail->Username = “username@gmail.com”; // SMTP username
    $mail->Password = “password”; // SMTP password
    $webmaster_email = “username@doamin.com”; //Reply to this email ID
    $email=”username@domain.com”; // Recipients email ID
    $name=”name”; // Recipient’s name
    $mail->From = $webmaster_email;
    $mail->FromName = “Webmaster”;
    $mail->AddAddress($email,$name);
    $mail->AddReplyTo($webmaster_email,”Webmaster”);
    $mail->WordWrap = 50; // set word wrap
    $mail->AddAttachment(“/var/tmp/file.tar.gz”); // attachment
    $mail->AddAttachment(“/tmp/image.jpg”, “new.jpg”); // attachment
    $mail->IsHTML(true); // send as HTML
    $mail->Subject = “This is the subject”;
    $mail->Body = “Hi,
    This is the HTML BODY “; //HTML Body
    $mail->AltBody = “This is the body when user views in plain text format”; //Text Body
    if(!$mail->Send())
    {
    echo “Mailer Error: ” . $mail->ErrorInfo;
    }
    else
    {
    echo “Message has been sent”;
    }
    ?>
    4 buka file class.smtp.php di folder phpmailer
    5 kopi paste kode ini

    $host = “ssl://smtp.gmail.com”;
    $port = 465;

    sebelum baris 104 #connect to the smtp server

    6 coba buka browser dan jalankan..

    semoga membantu.

  8. ojie says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    mas saya coba pakai sendmain di xampp

    tapi tetap ngak bisa saya nyoba di local tapi terhebung ke internet….
    mohon bantuannya

    ini pesan eroor nya

    testing sending email with sendmail methodsendmailExit status code: 1
    Unable to open a socket to Sendmail. Please check settings.
    Unable to send email using PHP Sendmail. Your server might not be configured to send mail using this method.

    User-Agent: CodeIgniter
    Date: Fri, 14 Aug 2009 04:12:00 +0800
    From: “Deka dari gmail”
    Return-Path:
    To: rhozhie@gmail.com
    Subject: =?utf-8?Q?Email_Test_subject?=
    Reply-To: “qorianku@gmail.com”
    X-Sender: qorianku@gmail.com
    X-Mailer: CodeIgniter
    X-Priority: 3 (Normal)
    Message-ID:
    Mime-Version: 1.0

    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 8bit

    Testing the email class CodeIgniter dengan sendmail

  9. admin says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    mas ojie, xampp nya di linux apa di windows.
    kalo windows jelas gak bisa
    karena itu programmnya linux

    kalo mau nyoba di xampp windows, coba pake method 1 (smtp) atau ke 2(mail -> harus download library mail kalo belum punya)

    good luck

  10. ojie says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    o iya maap mas saya ngak baca…he he he

    trus download library mailnya dimana dan kalo sudah di tarok dimana mas….

    maap mas masih nubitol he eh he eh

    sebelumnya terima kasih mas.

  11. ojie says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    saya pake xampp di windows mas

  12. deka says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    sori aku salah tulis kemaren,

    sebenernya fungsi mail, sudah ada di dalam php, jadi
    sudah ada di dalam CI.. tinggal pake aja

    jadi penjelasannya fungsi kirim email di CI gini
    1. dengan SMTP. CI sudah membundel perintah2 koneksi socket, untuk bisa komunikasi langsung dengan smtp server yang dituju.
    2. dengan MAIL. CI memakai perintah mail dari PHP yang sudah built-in.
    3. dengan SENDMAIL, CI langsung memakai program sendmail, biasanya program ini adanya di OS Linux, tapi diwindows juga ada. saya dapet info, kalo sendmail ini sudah ada yang versi windows. sendmail ini satu paket dengan xampp (sori kurang teliti). jadi kalo mau pake sendmail di server windows, bisa2 aja, asal path ke program sendmail nya benar.

    wassalam

  13. Andi Eko says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    Saya coba persis yang tertera diatas dengan config saya dan hasilnya muncul error seperti ini.

    A PHP Error was encountered

    Severity: Warning

    Message: mail() [function.mail]: SMTP server response: 553 We do not relay non-local mail, sorry.

    Filename: libraries/Email.php

    Line Number: 1519

    Unable to send email using PHP mail(). Your server might not be configured to send mail using this method.

    begini setting saya :
    function send_smtp()
    {
    $config['protocol'] = ‘mail’;
    $config['smtp_host'] = ‘smtp.gmail.com’;
    $config['smtp_port'] = 465;
    $config['smtp_user'] = ‘andilubab@gmail.com’;
    $config['smtp_pass'] = ’123456′;
    $config['priority'] = 1;
    $config['mailtype'] = ‘text’;
    $config['charset'] = ‘utf-8′;
    $config['wordwrap'] = TRUE;
    $this->email->initialize($config);
    $this->email->from(‘andilubab@gmail.com’, ‘Dari gmail’);
    $this->email->to(‘im@andieko.web.id’);

    $this->email->subject(‘Terimakasih’);
    $this->email->message(‘Kami akan segera memproses dan melakukan verifikasi. Untuk selanjutnya tunggulah email dari kami. Terimakasih’);

    $this->email->send();
    echo $this->email->print_debugger();
    }

    Apa yang harus saya setting ya ?
    Saya menggunakan XAMPP dan Windows.
    Setting php. ini yang sudah saya buka :
    [mail function]
    ; For Win32 only.
    SMTP = localhost
    smtp_port = 25
    extension=php_smtp.dll
    extension=php_openssl.dll

    Masih ada yang kurang apa ya ?
    Mohon pencerahannya karena sudah mentok .. gak jalan semua.
    Thxs

  14. qorianku says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    sori abis ada maintenance .
    jadi responnya agak lama.

    kalo dilihat kasusnya,
    mungkin bisa diganti SMTP nya di php.ini ke SMTP server yang dipake. kalo SMTP server nya pake localhost, maka mas nya juga harus nginstall mail server komplit dengan SMTP nya

  15. shezars says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    Asslm, terima kasih dan sangat membantu sekali.
    Salut aku dengan mas deka ini,

    Yang aku ingin tanyakan adalah, bisakan sebuah email dapat langsung meng-Attach file tanpa harus meng-attach secara manual, //??

    Terima Kasih Banyak Mas Deka, Maju Terus Programmer Indonesia.

  16. qorianku says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    attachment bisa langsung kok ..

    di library CI nya dah nyedian fungsinya

    $this->email->attach(‘/path/to/doc1.doc’);

    $this->email->send();

    terima kasih

  17. teddy says:

    Bagus ato Jelek: Thumb up 0 Thumb down 0

    mas, mau tnya. kalo misal pke php mailer diterapin di CI gmn? caranya ?

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2010 Catatan (PHP) Suffusion WordPress theme by Sayontan Sinha