Results 1 to 5 of 5

Thread: PHP mail attachment problem

  1. #1
    Join Date
    Mar 2010

    PHP mail attachment problem

    Hello all,

    Im using this mail function
    // Read POST request params into global vars
    $to      = "chapters@letstrywriting.com";
    $from    = "Submission@letstrywriting.com";
    $name    = "Submission";
    $subject = $_POST['subject'];
    $message = "";
    $your_name = $_POST['name'];
    $your_email = $_POST['subject'];
    $your_phone = $_POST['message']; 
    if (!empty($your_name)) { 
    $message .= 'Your Name: '. $your_name ."\n\n";
    if (!empty($your_name)) { 
    $message .= 'Your Email: '. $your_email ."\n\n";
    if (!empty($your_name)) { 
    $message .= 'Your Phone: '. $your_phone ."\n\n";
    // Obtain file upload vars
    $fileatt		= $_FILES['fileatt']['tmp_name'];
    $fileatt_type	= $_FILES['fileatt']['type'];
    $fileatt_name	= $_FILES['fileatt']['name'];
    $headers = "From: $from";
    if (is_uploaded_file($fileatt) || is_uploaded_file($fileatt2) || is_uploaded_file($fileatt3)) {
      // Read the file to be attached ('rb' = read binary)
      if (is_uploaded_file($fileatt)) {
      	$file = fopen($fileatt,'rb');
      	$data = fread($file,filesize($fileatt));
      	// Base64 encode the file data
      	$data = chunk_split(base64_encode($data));
      // Generate a boundary string
      $semi_rand = md5(time());
      $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
      // Add the headers for a file attachment
      $headers .= "\nMIME-Version: 1.0\n" .
                  "Content-Type: multipart/mixed;\n" .
                  " boundary=\"{$mime_boundary}\"";
      // Add a multipart boundary above the plain message
      $message = "This is a multi-part message in MIME format.\n\n" .
                 "--{$mime_boundary}\n" .
                 "Content-Type: text/plain;\n charset=\"iso-8859-1\"\n" .
                 "Content-Transfer-Encoding: 7bit\n\n" .
                 $message . "\n\n" .
      // Add file attachment(s) to the message
      if ($fileatt_name > "") {
      	$message .= "Content-Type: {$fileatt_type};\n" .
             	     " name=\"{$fileatt_name}\"\n" .
                	  "Content-Transfer-Encoding: base64\n" .
               	     "Content-Disposition: attachment;\n" .
               	     " filename=\"{$fileatt_name}\"\n\n" .
                	  $data . "\n" .
    	$message .=  "--\n\n";	
    // Send the message
    $ok = @mail($to, $subject, $message, $headers);
    if ($ok) {
      echo "<p>Mail sent!</p>";
      header("location: subthanks.php");
    } else {
      echo "<p>Mail could not be sent. Sorry!</p>";
      header("location: subbad.php");
    It seems to work, however when I go to check the email the file has not attached. The attachment seems to be there but it gives its size as 0kb and doesnt register it with a .filename ending. Could someone show me where im going wrong?

    Thanks in advance.

  2. #2
    Join Date
    Mar 2010
    Actually its a problem with the server, could someone mark as solved? Feel free to use this code

  3. #3
    Join Date
    Nov 2012
    What was the problem with your server. I am having the same problem and not sure how to fix it

  4. #4
    Join Date
    Mar 2010
    Never did solve the server issue. the mail function and the recipient email were hosted on the same server. We set up a work around where the mail function sent an email to an external gmail address, which then forwarded it back to the intended recipient. Works fine and with the added bonus of copies of all emails sent.

    Sorry for not being more helpful.

  5. #5
    Join Date
    Oct 2012
    Don't re-invent the wheel. Use PHP Mailer.
    Probably the Best Web Hosting you'll find out there.

    My web Development shop.

    Need web development done? PM me.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
HTML5 Development Center