• Beranda»
  • artikel»
  • mengirim email dengan file lampiran (file attachment)

Mengirim Email dengan File Lampiran (File Attachment)

Previous Page

Mengirimkan email dengan teks sederhana kadang masih terasa kurang lengkap. Ada waktunya Anda menginginkan mengirim file lampiran (attachment) kepada pengguna sebagai dokumen penunjang untuk melengkapi pesan email. Misalnya pada transaksi online seperti pemesanan tiket. Saat Anda memesan tiket, dan selesai melakukan pembayaran, Anda akan menerima pesan email yang dilengkapi dengan file lampiran berupa tiket yang nantinya dapat dicetak untuk melakukan boarding di bandara.

Jika Anda bekerja pada bagian HRD ataupun keuangan, Anda tentunya banyak berhubungan dengan pengiriman dokumen kepada klien melalui email. Dokumen tersebut dapat berupa gambar dalam bentuk PNG, JPG, JPEG, maupun dalam dokumen lain dalam bentuk DOCX, PDF, dan lainnya. Semua dokumen tersebut dapat dikirim dengan melalui file lampiran (attachment) pada email.

Pembuatan script untuk mengirimkan file lampiran pada dasarnya sama seperti mengirimkan pesan email berupa teks sederhana. Namun ada beberapa hal yang harus dilakukan seperti proses uploading file ke server, kemudian membaca dan mengambil konten dari file yang berhasil di upload. Jika Anda merasa repot dengan proses uploading file, Anda cukup meletakkan file-file lampiran di server hosting secara langsung. Anda cukup melakukan pengarahan terhadap posisi direktori dimana file tersebut diletakkan.

File index.php

HTML

1.  <html>
2.  <style>
3.     form input{margin:3px;padding:3px 5px;}
4.     form input[type=text]{width:220px;}
5.     form input[type=submit], input[type=reset]{cursor:pointer;}
6.  </style>
7.  <body>
8.     <h2>Mengirim pesan email dengan file attachment</h2>
9.     <form name="form1" action="https://www.saidalfaruq.net/project/z/kirim_attachment.php" enctype='multipart/form-data' method="post">
10.      Penerima : <input type="text" name="penerima"><br>
11.      Subyek : <input type="text" name="subyek"><br>
12.      Pesan : <br>
13.      <textarea name="pesan" cols="40" rows="6"></textarea><br>
14.      Lampiran File : <br>
15.      <input type="file" name="lampiran"><br>
16.      <input type="submit" name="submit" value="submit"> <input type="reset" value="reset">
17.    </form>
18. </body>
19. </html>

File kirim_attachment.php

PHP

1.  <?php
2.     $penerima=$_POST['penerima'];
3.     $subyek=$_POST['subyek'];
4.     $pesan=$_POST['pesan'];
5.     $pesan=wordwrap($pesan,70);
6.     $pengirim="no-reply@saidalfaruq.net";
7.     $nama_pengirim="said alfaruq";
8.     
9.     //mengirim file lampiran ke server
10.    $tmp_file=$_FILES['lampiran']['tmp_name'];
11.    $file_name=$_FILES['lampiran']['name'];
12.    if(!empty($tmp_file)){
13.      $move=move_uploaded_file($tmp_file,$file_name);
14.      
15.      //mendapatkan isi file yg sudah dikirim di server hosting
16.      $fp = fopen($file_name,"rb");
17.  $data = fread($fp,filesize($file_name));
18.  fclose($fp);
19.      
20.      //encode data, for safe transit
21.      $konten= chunk_split(base64_encode($data));
22.      $name=basename($file_name);
23.      
24.      //boundary
25.      $uid = md5(time());
26.      
27.      //headers for attachment
28.      $headers = "From: $nama_pengirim <$pengirim>\r\n";
29.      $headers .= "MIME-Version: 1.0\r\n";
30.      $headers .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
31.    
32.      //preparing attachment
33.      if(!empty($file_name) > 0){
34.         if(is_file($file_name)){
35.            $messages = "--".$uid."\n";
36.            $messages .= "Content-Type: text/html; charset=\"UTF-8\"\r\n";
37.            $messages .= "Content-Transfer-Encoding: 7bit\n".$pesan."\r\n";
38.            
39.            $messages .= "--".$uid."\r\n";
40.            $messages .= "Content-Type: application/octet-stream; name=\"".$name."\"\r\n";
41.            $messages .= "Content-Transfer-Encoding: base64\r\n";
42.            $messages .= "Content-Description: ".$name."\r\n";
43.            $messages .= "Content-Disposition: attachment;\r\n";
44.            $messages .= "filename=\"".$name."\"\r\n\r\n".$konten."\r\n\r\n";
45.         
46.            $messages .= "--".$uid."\r\n";
47.            ini_set('sendmail_from',$pengirim);
48.            $return_path = "-".$pengirim;
49.            $kirim=mail($penerima,$subyek,$messages,$headers,$return_path);
50.            if($kirim==true){
51.              //menghapus file attachment di server
52.              if(file_exists($file_name)){
53.                 unlink($file_name);
54.              }
55.              echo "Pesan email dengan attachment berhasil dikirim.";
56.            }else{
57.              echo "Pesan email dengan attachment gagal dikirim.";
58.            }
59.         }
60.      }
61.    }
62.    
63. ?>

Pada file index.php, jangan lupa untuk menyertakan atribut enctype='multipart/form-data'. Atribut ini berfungsi sebagai sarana untuk mengirimkan data file jika terdapat input berupa file. Untuk memasukkan file yang akan dilampirkan digunakan inputan file dengan nama lampiran.

Pada file kirim_attachment.php, semua data yang dilewatkan ditangkap dengan variabel global $_POST. Jika file lampiran yang berhasil dilewatkan tidak dalam posisi kosong, akan disimpan di server host terlebih dahulu dengan perintah move_uploaded_file. Langkah selanjutnya adalah dengan membaca file dan mendapatkan konten file tersebut dengan fread($fp,filesize($file_name));. Hal yang perlu diperhatikan, pada varibel headers, dan juga variabel message. Karena terdapat komponen yang harus disertakan seperti Content-Type, Content-Description, dan Content-Disposition.

Perhatikan pada baris 47-48, ini_set('sendmail_from',$pengirim); $return_path = "-".$pengirim;, script baris ini sebenarnya opsional yang bisa tidak disertakan. Kadang walaupun pesan email sudah dikirim (sent) namun tidak sebenarnya terkirim (delivered). Script tersebut dibuat untuk menghindari email tersebut agar dapat terkirim (delivered) kepada penerima email.

Jika script diatas dijalankan, akan mengirimkan pesan e-mail berserta file lampirannya kepada email yang dituju. Jika berjalan baik akan mendapatkan tampilan seperti dibawah ini :
mengirim email dengan file lampiran (file attachment)
mengirim email dengan file lampiran (file attachment)

noteCatatan : Sebuah pesan email pada dasarnya dalam kondisi siap untuk dikirim. Namun dalam beberapa kasus email yang telah dikirimkan tidak diterima(delivered) kepada penerima. Kondisi ini disebabkan oleh banyak hal seperti terlalu banyak variabel yang disertakan pada header, sampai dengan masalah penyaring script/spam oleh server SMTP tujuan sehingga pesan email tersebut terlebih dahulu diblock oleh server SMTP tujuan.

   0   695

Kategori : HTML - PHP - Support

facebooktwittergoogle pluswhatapplinkedinpinterest

Previous Page

Tinggalkan Balasan

Nama Pengguna* :

Email* :

Formulir ini hanya bagi member yang sudah terdaftar. disini.

Belum terdaftar? silahkan Daftar disini.

Mengirim Komentar

Setiap pengunjung situs ini dapat memposting komentar disini, namun tidak semua komentar dapat ditampilkan. Gunakan kalimat baku bahasa Indonesia yang mudah dimengerti. Dilarang memposting kalimat yang berisi ujaran kebencian, SARA, pornografi, perjudian dan spam. Komentar harus sesuai dengan topik. Untuk bahasan lainnya yang lebih mendalam dapat menggunakan sarana forum. Anda dapat mengirimkan suatu pertanyaan dan member lainnya akan menjawab pertanyaan Anda.

News Letters

Silahkan masukkan email Anda untuk berlangganan informasi kami

Polling

1. Apakah website ini menambah pengetahuan Anda?
Ya
Tidak
Tidak Tahu
2. Seberapa sering Anda mengunjungi website ini?
Sering
Jarang
Tidak Pernah
3. Apakah penilaian Anda terhadap website ini, jika melihat dari segi konten/isi?
Sangat Bagus
Bagus
Cukup Bagus
Kurang Bagus
4. Apakah penilaian Anda terhadap website ini, jika melihat dari segi tampilan?
Sangat Bagus
Bagus
Cukup Bagus
Kurang Bagus
5. Untuk meningkatkan kualitas website ini, Apakah saran Anda?


Silahkan login terlebih dahulu untuk mengirimkan polling. disini.

Belum terdaftar? silahkan Daftar disini.