Page 1 of 1
Really need help
Posted: Fri May 28, 2010 3:34 pm
by c_pattle
I've been trying to get this script to work for ages but having no luck. I have an attachment for which I have shown below
Code: Select all
<form method="post" action="order_success2.php" enctype="multipart/form-data">
<ul>
<li><input type="file" name="att[]" size="26" /></li>
<li><input type="file" name="att[]" size="26" /></li>
<li><input type="submit" name="submit" value="Submit!" /></li>
</ul>
</form>
What I'm trying to achieve is to be able to send more than one attachment with an email. At the moment I can only get one to work. Can anyone help pleaseeeeeee?
I've attached the page "order_success2.php"
Thanks
Re: Really need help
Posted: Fri May 28, 2010 4:43 pm
by hypedupdawg
Ummmm... you haven't actually attached any files.
But I'll be happy to help when you do!
Re: Really need help
Posted: Fri May 28, 2010 5:25 pm
by c_pattle
Thanks. I can't upload .php files so I'll just copy the code
Code: Select all
<?php
$to = "someone@gmail.com";
foreach($_FILES['att'] as $key => $value){
$att = $value['att'];
$att_path = $value['att']['tmp_name'];
$att_name = $value['att']['name'];
$att_size = $value['att']['size'];
$att_type = $value['att']['type'];
$fp = fopen( $att_path, "rb");
$file = fread( $fp, $att_size );
fclose ($fp);
$num = md5(time());
$str = "==multipart_Boundary_x{$num}x";
$file = chunk_split(base64_encode($file));
$subject = "You have been sent some content by " . $_REQUEST['order_company_name'];
$email = $_REQUEST['order_email'] ;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/mixed;";
$headers .= "boundary=\"{$str}\"\r\n";
$headers .= "From: $email";
$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 .= "--{$str}\r\n";
$msg .= "Content-Type: {$att_type}; ";
$msg .= "name=\"{$att_name}\"\r\n";
$msg .= "Content-Disposition: attachment; ";
$msg .= "filename =\"{$att_name}\"\r\n";
$msg .= "Content-Transfer-Encoding: base64\r\n";
$msg .= "$file\r\n\n";
$msg .= "--{$str}";
$sent = mail($to, $subject, $msg, $headers) ;
if($sent)
{print "Thank you. Your order was sent successfully"; }
else
{print "Sorry. We encountered an error sending your mail"; }
}
?>
Re: Really need help
Posted: Sat May 29, 2010 4:22 am
by hypedupdawg
I think that your file that deals with the request is ok - but in your initial form, you have two fields with the same name. Having an att[] array is a good way to go, but I think you may need to number them like so:
Code: Select all
<li><input type="file" name="att[0]" size="26" /></li>
<li><input type="file" name="att[1]" size="26" /></li>
If you are doing this for an infinite number of attachments, you could always have some sort of counter set up to loop through, add a field and change the name by 1.
Hope this helps!