Problem sending mail with attachment

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
User avatar
Apas
Forum Newbie
Posts: 7
Joined: Thu Apr 03, 2008 1:08 am
Location: Bochum, Germany
Contact:

Problem sending mail with attachment

Post by Apas »

Hi,

I am trying to send an email with an attachment via the phpmail function on a "Zend Core for i5"-System:

Code: Select all

<?php
 
  $Dateiname = "./dokument_templates/symbollegende.pdf";
  $Dateinameanhang = "symbollegende.pdf";
 
  $to="target@abc.de";
  $subject="Test Attachement";
  $headers = "From: test@abc.de";
  $message = "Test Test Test Test";
  
  // Read the file to be attached ('rb' = read binary)
  $file = fopen($Dateiname,'rb');
  $data = fread($file,filesize($Dateiname));
  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}\"";
 
  // 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: application/pdf;\n" .
              " name=\"{$Dateinameanhang}\"\n" .
              "Content-Disposition: attachment;\n" .
              " filename=\"{$Dateinameanhang}\"\n" .
              "Content-Transfer-Encoding: base64\n\n" .
              $data . "\n\n" .
              "--{$mime_boundary}--\n";
 
 
// Send the message
$ok = @mail($to, $subject, $message, $headers);
 
?>
With a Thunderbird email client it is doing as expected, but when getting the mail with MS-Outlook (via Exchange) the mail displays wrong. The attachment is coded as text in the message.....
Any suggestions what went wrong?

Greetings
Thorsten
Last edited by Benjamin on Mon May 11, 2009 2:44 am, edited 1 time in total.
Reason: Changed code type from text to php.
Post Reply