Note that there are some explanatory texts on larger screens.

plurals
  1. POSending an attachment with php
    primarykey
    data
    text
    <p>I am trying to create an email form that allows you to send an attachment. I have pieced code together from my PHP book and several websites.</p> <p>When I send the email using this form the attachment ends up corrupted and the "$comments" don't seem to go through.</p> <p>Here is the code I am using:</p> <pre><code>&lt;?php $to = $_POST['to']; $from = $_POST['from']; $re = $_POST['re']; $comments= $_POST['comments']; $att = $_FILES['att']; $att_path= $_FILES['att']['tmp_name']; $att_name = $_FILES['att']['name']; $att_size = $_FILES['att']['size']; $att_type = $_FILES['att']['type']; //open, read, then close the file $fp = fopen( $att_path, "rb" ); $file = fread( $fp, $att_size ); fclose($fp); #create a boundary string $num = md5(time()); $str = "==Multipart_Boumdary_x{$num}x"; //encode the data for transit $file = chunk_split(base64_encode($file)); //define header $hdr = "MIME-Versio: 1.0\r\n"; $hdr .= "Content-Type: multipart/mixed; "; $hdr .= "boundary=\"{$str}\"\r\n"; $hdr .= "From: $from \r\n"; #define message $msg = "This is a multi-part message in MIME format\r\n\n"; $msg .= "--{$str}\r\n"; $msg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\r\n"; $msg .= "Content-Transfer-Encoding: 8bit\r\n"; $msg .= "$comments\r\n\n"; $msg .= "--{$str}\r\n"; #define the non-text attatchment $msg .= "Content-Type: {$att_type}; "; $msg .= "name=\"{$att_name}\"\r\n"; $msg .= "Content-Disposition: attachment; "; $msh .= "filename=\"{$att_name}\"\r\n"; $msg .= "Content-Transfer-Encoding: base64\r\n"; $msg .= "$file\r\n\n"; $msg .= "--{$str}"; #sendmail $ok = mail( $to, $re, $msg, $hdr ); if( $ok ) echo "OK"; ?&gt; </code></pre> <p>So, what am I doing wrong?</p> <p>Thanks!</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload