Hi Petr: > I using PHP4 on SuSe Linux. > I'm sending an MIME email (I generatate all the headers and so on) with > attachments.
Your coding worked fine for me. > When I then send it, the mail arrives, but the attached file (e.g. *.zip) is > corrupted. > In original there are #0 (char. ascii 0), in attachment they come as "\0" > (#92#48). Two things I can think of... First: things might run differnetly on SuSE Linux. Perhaps there are configuration settings on your server that are throwing things off. Check your OS documentation and newsgroup archives. I guess, also check the PHP mailing list archives too: http://groups.google.com/groups?hl=en&group=php.general. You might need to take a look at RFC-2045 Section 6.8 to see why that your system is properly converting things. Second: the way you've formatted the MIME headers et al may be causing some problem. Here's a test script (fix email line wrapping as needed) of mine that works (on PHP 4.0.7-dev / NT 4 / Apache). Try it on your system and see what happens. <?php # Set accordingly... $To = '[EMAIL PROTECTED]'; $FirstName = 'Joe'; # name of person who wants file $Subject = 'the big test'; $Email = '[EMAIL PROTECTED]'; # from address $Name = 'Analysis and Solutions'; # your name $FileName = 'email.attach.test'; # should be a .zip file # don't include file extension $InDir = '.'; # directory where file can be found # Used for purposes of this example, # but set another way in my real script... $Invoice = date('YmdHis'); # Leave this. $Encoding = 'base64'; # Make sure variables are empty to start with... $Body = ''; $AdditionalHeaders = ''; # Here we go... if ( !$InHandle = @fopen("$InDir/$FileName.zip","r") ) { echo "<h3>Couldn't open input file.</h3>"; exit(); } $Boundary = "=====================_$Invoice" . "==_"; $AdditionalHeaders .= "Mime-Version: 1.0\n"; $AdditionalHeaders .= "Content-Type: multipart/mixed; boundary=\"$Boundary\"\n"; $Body = "This is a multi-part message in MIME format.\n\n"; $Body .= "--$Boundary\n"; $Body .= "Content-Type: text/plain; charset=us-ascii\n"; $Body .= "Content-Transfer-Encoding: 7bit\n\n"; $Body .= "Greetings $FirstName:\n\nThanks for your order.\n\n"; $Body .= "The copy of $Subject you ordered is attached below.\n\n"; $Body .= "\n\nSincerely,\n\n$Name\n\n"; $Body .= "--$Boundary\n"; $Body .= "Content-Type: application/x-zip-compressed; name=\"$FileName.zip\"\n"; $Body .= "Content-Transfer-Encoding: $Encoding\n"; $Body .= "Content-Disposition: attachment; filename=\"$FileName.zip\"\n\n"; $Body .= chunk_split( base64_encode( fread( $InHandle, filesize("$InDir/$FileName.zip") ) ) ); $Body .= "\n--$Boundary--"; mail("$To", "$Subject", "$Body", "From: $Email\nX-Loop: $Email\n$AdditionalHeaders\n"); # Show results in browser... echo '<p>The following body was sent:</p>'; echo "\n<pre>$Body</pre>"; ?> Enjoy, --Dan -- PHP scripts that make your job easier http://www.analysisandsolutions.com/code/ SQL Solution | Layout Solution | Form Solution T H E A N A L Y S I S A N D S O L U T I O N S C O M P A N Y 4015 7 Ave, Brooklyn NY 11232 v: 718-854-0335 f: 718-854-0409 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php