Sunday, November 21, 2010

Mengirim Email Dengan PEAR::MAIL PHP

Sebagian besar para developer PHP cenderung memilih function mail() pada aplikasi yang sedang dikembangkan untuk mengirim email. Lebih pratis memang, akan tetapi jika kita ingin mengganti SMTP server akan cukup repot karena harus menggantinya pada php.ini dan harus merestart web server apalagi jika web server yang digunakan sudah diakses oleh banyak pengguna.



PEAR (PHP Extension and Application Repository) menyediakan sebuah library khusus untuk menghandle pengiriman email yang terdapat pada file Mail.php. kelebihannya adalah kita tidak perlu merubah SMTP server pada php.ini karena function ini "menembak" langsung dari librarynya ke SMTP server yang bisa disetting langsung pada saat eksekusi program. berikut adalah contoh listing program untuk mengirim email dengan PEAR::Mail :

<?
 require_once "Mail.php";
 require_once "Mail\mime.php";
 
 $smtpServer = "mail.mailserver.com"; // bisa diisi dengan IP SMTP Server
 // user sipengirim yang terdaftar di mail server, bisa dikosongkan jika server mensupport annonymous sender
 $username = "user"; 
 $password = "mypassword";
 
 $MailAddressFrom =  "user@mailserver.com"; // akan ditampilkan pada header email SENDER
 $MailAccountFrom = "user"; 
 
 // target email penerima
 $strTargetEmail = "someone@someserver.com"; 

 // Subjek email
 $tmpSubject = "Percobaan";
 
 // konten email yang akan dikirim
 $strMessage = "<p>Hello, ini adalah email percobaan...</p>";
 
 // membuat objek baru Mail Mime
 $message = new Mail_mime();
 
 // memasukan konten email ke objek Mime untuk diproses menjadi character set email
 $message->setHTMLBody($strMessage);
 // mengambil character set email yang akan dikirim
 $body = $message->get();
 //setting header email yang akan dikirim
 $extraheaders = array("From"=>$MailAddressFrom, "Subject"=>$tmpSubject);
 $headers = $message->headers($extraheaders);
 
 // inisialisasi object Mail dari settingan diatas
 $smtp = Mail::factory(
  'smtp',
  array (
   'host' => $smtpServer,
   'auth' => (trim($username)!="" && trim($password)!="" ? true : false),
   'username' => $username,
   'password' => $password
  )
 );
 
 // proses pengiriman email
 $mail = $smtp->send($strTargetEmail, $headers, $body);
 
 // cek apakah email sudah terkirim atau tidak
 if ($mail) {
  echo "Email berhasil dikirim";
 }else{
  echo "Email gagal dikirim : " . $mail;
 }
?>


Cukup mudah bukan? maaf jika terjadi kesalahan dalam penulisan kode diatas, jika ada pertanyaan silakan tulis pada komentar.

Selamat mencoba :)

6 comments:

  1. terimakasih, cukup mencerahkan

    ReplyDelete
  2. tanya nich bro.. untuk buat email pake php itu apa cuma menggunakan satu file diatas saja? tapi gimana dengan file yang # require_once "Mail.php";
    # require_once "Mail\mime.php";
    dua file php itu gimana bro, apa itu file udah tersedia d hosting, atau gimana??

    ReplyDelete
  3. yang require_once "Mail.php"; dan require_once "Mail\mime.php"; itu merupakan bawaan dari library PEAR bawaan PHP mass.. file itu bisa di buka di folder installasi PHP pada folder PEAR

    pada folder PEAR tersebut juga terdapat semua library PEAR yang bisa mass pake seperti Spreadsheet dan lain-lain :)

    ReplyDelete
  4. Mas ikhsan,tanya nih. Adakah settingan untuk kedua library tsb?? Soalnya waktu saya jalankan program ada keterangan seperti ini
    "Strict Standards: Non-static method PEAR::isError() should not be called statically, assuming $this from incompatible context in C:\xampp\php\PEAR\Mail\mime.php on line 416"


    Mohon pencerahannya

    ReplyDelete
  5. mas saya sdh terlanjur mengottak ngati pjp.ini. apakah setingannya perlu dikembalikan seperti awal lagi ?

    ReplyDelete