Problem with attaching files to Mail-function

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
eginitza
Forum Newbie
Posts: 2
Joined: Thu Jun 23, 2011 8:01 am

Problem with attaching files to Mail-function

Post by eginitza »

Hi,

I'm having problems with attached files to the PHP - Mailfunction. It used to work but then suddenly attached files did not open properly at the recieving end.

Anyone knows why?
Here´s the code

Code: Select all


<?
// Read POST request params into global vars
$to="";
$from= $_POST['from'];
$bcc= $_POST['bcc'];

$subject = $_POST['subject'];
$message = $_POST['message'];

$headers = 'MIME-Version: 1.0' .\"\n";
$headers .= 'Content-type: text/plain; charset=iso-8859-1' .\"\n";
$headers .= "From: $from".\"\n";
$headers .= "Bcc: $bcc".\"\n";

// Obtain file upload vars
$fileatt      = $_FILES['fileatt']['tmp_name'];
$fileatt_type = $_FILES['fileatt']['type'];
$fileatt_name = $_FILES['fileatt']['name'];


if (is_uploaded_file($fileatt)) {
  // Read the file to be attached ('rb' = read binary)
  $file = fopen($fileatt,'rb');
  $data = fread($file,filesize($fileatt));
  fclose($file);

  // 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}\"\n";

  // 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; charset=\"iso-8859-1\"\n" .
             "Content-Transfer-Encoding: 7bit\n\n" .
             $message . "\n\n";

  // Base64 encode the file data
  $data = chunk_split(base64_encode($data));

  // Add file attachment to the message
  $message .= "--{$mime_boundary}\n" .
              "Content-Type: {$fileatt_type};\n" .
              " name=\"{$fileatt_name}\"\n" .
              //"Content-Disposition: attachment;\n" .
              //" filename=\"{$fileatt_name}\"\n" .
              "Content-Transfer-Encoding: base64\n\n" .
              $data . "\n\n" .
              "--{$mime_boundary}--\n";
}

// Send the message
$ok = @mail($to, $subject, $message, $headers);
if ($ok) {
echo "<p>Meddelandet har skickats iväg. </p>";
} else {
  echo "<p>Meddelandet kunde tyvärr inte skickas. Försök igen!</p>";
}
?>

User avatar
yacahuma
Forum Regular
Posts: 870
Joined: Sun Jul 01, 2007 7:11 am

Re: Problem with attaching files to Mail-function

Post by yacahuma »

why dont you use swiftmailer?
eginitza
Forum Newbie
Posts: 2
Joined: Thu Jun 23, 2011 8:01 am

Re: Problem with attaching files to Mail-function

Post by eginitza »

What is swiftmailer?
Post Reply