Minggu, 19 Agustus 2012

Mengirim Email Attachment dengan PHP Fungsi Mail (Pemrograman PHP)

Setelah berhasil menggunakan PHP untuk mengirim Email dengan SMTP GMail dan Menerima Email dengan IMAP dari GMail, kali ini kita coba untuk mengirimkan Email dengan Attachment. Untuk kali ini kita pakai fungsi Mail() dari PHP untuk mengirimkan Email beserta sebuah File Attachment.

Harap menjadi catatan bahwa program ini hanya berjalan pada Web Server Apache-PHP yang telah dikonfigurasi agar dapat mengirim email menggunakan sebuah SMTP Mail Server. Tentu saja yang jelas berjalan apabila kita jalankan script PHP ini pada Layanan Hosting Online yang Gratis maupun Berbayar. Sedangkan pada server localhost perlu kita setting lebih lanjut dimana tidak dibahas disini.

Kode programnya sebagai berikut :

<?php
    // http://cariprogram.blogspot.com
    // nuramijaya@gmail.com
    // sumber : http://www.finalwebsites.com/forums/topic/php-e-mail-attachment-script

    $filename = "dokumen.zip";
    $path = ""; //$_SERVER['DOCUMENT_ROOT']."/path_dir/";


    $mailto = "nuramijaya@gmail.com";
    $from_mail = "nuramijaya@mapjogja.com";
    $from_name = "Map Jogja";
    $replyto = "";
    $subject = "Test Attachment";
    $message = "Halo ini Test Attachment";

    $file = $path.$filename;
    $file_size = filesize($file);
    $handle = fopen($file, "r");
    $content = fread($handle, $file_size);
    fclose($handle);
    $content = chunk_split(base64_encode($content));
    $uid = md5(uniqid(time()));
    $name = basename($file);
    $header = "From: ".$from_name." <".$from_mail.">\r\n";
    $header .= "Reply-To: ".$replyto."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    $header .= "This is a multi-part message in MIME format.\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $header .= $message."\r\n\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"; // use different content types here
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $header .= $content."\r\n\r\n";
    $header .= "--".$uid."--";
    if (mail($mailto, $subject, "", $header)) {
        echo "Kirim Email ... OK"; // or use booleans here
    } else {
        echo "Terjadi Kesalahan ... ERROR!";
    }
?>

Kode program selengkapnya dapat didownload disini. Setelah masuk Google-Docs, klik File-Download.

Semoga Bermanfaat.