Send file attachments but they arrive without content!

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
didster
Forum Newbie
Posts: 13
Joined: Fri Oct 31, 2008 11:32 am

Send file attachments but they arrive without content!

Post by didster »

Hi, you may have seen this code before as I thought I was having problems with email. It turned out that it was the hosts fault! This problem is probably the same, I can now send email but any attachments added using the upload feature, send the attachment file but with no content. I have tried it on my own server and several others and is fine. Please help

The phpinfo of the new server is...

http://www.splinegauges.co.uk/phpinfo.php

Code: Select all

<?php
 
// ------------- CONFIGURABLE SECTION ------------------------
 
$to = '' ;// $subject - set to the Subject line of the email, eg
//$subject  = "Feedback Form" ;
 
$subject = "Plug Gauge Quote Request Form" ;
 
$formurl = "/enquiryform/pluggauge.htm";
$errorurl = "/enquiryform/error.htm" ;
$thankyouurl = "/enquiryform/thankyou.htm" ;
 
// -------------------- END OF CONFIGURABLE SECTION ---------------
 
$contactname = $_POST['contactname'] ;
$companyname = $_POST['companyname'] ;
$currentaddress = $_POST['currentaddress'] ;
$contactnumber = $_POST['contactnumber'] ;
$rfqreference = $_POST['rfqreference'] ;
$teeth = $_POST['teeth'] ;
$dpmoduletext = $_POST['dpmoduletext'] ;
$dpmoduledrop = $_POST['dpmoduledrop'] ;
$pressureangle = $_POST['pressureangle'] ;
$helixangle = $_POST['helixangle'] ;
$helixhand = $_POST['helixhand'] ;
$pitchtext = $_POST['pitchtext'] ;
$pitchdrop = $_POST['pitchdrop'] ;
$gauge = $_POST['gauge'] ;
$typefit = $_POST['typefit'] ;
$facetext = $_POST['facetext'] ;
$facedrop = $_POST['facedrop'] ;
$quantity = $_POST['quantity'] ;
$materials = $_POST['materials'] ;
$notes = $_POST['notes'] ;
 
 
$chknotest = $_POST['chkno'] ;
 
 
// Read POST request params into global vars
 
$from    = $_POST['from'];
 
// Obtain file upload vars
$fileatt      = $_FILES['fileatt']['tmp_name'];
$fileatt_type = $_FILES['fileatt']['type'];
$fileatt_name = $_FILES['fileatt']['name'];
 
$headers = "From: $from";
 
//  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";
 
$message .=
 
"\n\n-- Chk --\n\n" .
 
$_POST['chkno'][0] .
$_POST['chkno'][1] .
$_POST['chkno'][2] ;
 
if (!empty($contactname)) {
    $message .= "\n\n-- Contact Name --\n\n" . $contactname;
}
 
if (!empty($companyname)) {
    $message .= "\n\n-- Company Name --\n\n" . $companyname;
}
 
if (!empty($currentaddress)) {
    $message .= "\n\n-- Current Address --\n\n" . $currentaddress;
}
 
if (!empty($contactnumber)) {
    $message .= "\n\n-- Contact Number --\n\n" . $contactnumber;
}   
 
if (!empty($rfqreference)) {
    $message .= "\n\n-- RFQ Reference Number --\n\n" . $rfqreference;
}
 
if (!empty($teeth)) {
    $message .= "\n\n-- Teeth --\n\n" . $teeth;
}
 
if (!empty($dpmoduletext)) {
    $message .= "\n\n-- DP Module Text --\n\n" . $dpmoduletext;
}
 
if (!empty($dpmoduledrop)) {
    $message .= "\n\n-- DP Module Drop --\n\n" . $dpmoduledrop;
}
 
if (!empty($pressureangle)) {
    $message .= "\n\n-- Pressure Angle --\n\n" . $pressureangle;    
}
 
if (!empty($helixangle)) {
    $message .= "\n\n-- Helix Angle --\n\n" . $helixangle;
}   
 
if (!empty($helixhand)) {
    $message .= "\n\n-- Helix Hand --\n\n" . $helixhand;
}
 
if (!empty($pitchtext)) {
    $message .= "\n\n-- Pitch Text (Check If Serration) --\n\n" . $dpmoduledrop . " " . $pitchtext;
}       
 
if (!empty($pitchdrop)) {
    $message .= "\n\n-- Pitch Drop (Check If Serration) --\n\n" . $dpmoduledrop . " " . $pitchdrop;
}
 
if (!empty($gauge)) {
    $message .= "\n\n-- Gauge Ref/Tool No. --\n\n" . $gauge;
}
 
if (!empty($typefit)) {
    $message .= "\n\n-- Type Fit --\n\n" . $typefit;
}
 
if (!empty($facetext)) {
    $message .= "\n\n-- Face Width Text --\n\n" . $facetext;
}
 
if (!empty($facedrop)) {
    $message .= "\n\n-- Face Width Drop --\n\n" . $facedrop;
}
 
if (!empty($quantity)) {
    $message .= "\n\n-- Quantity --\n\n" . $quantity;   
}
 
if (!empty($materials)) {
    $message .= "\n\n-- Materials --\n\n" . $materials;
}
 
if (!empty($notes)) {
    $message .= "\n\n-- Notes --\n\n" . $notes;
}
 
  
  // 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: {$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";
 
 
$http_referrer = getenv( "HTTP_REFERER" );
 
if (!isset($_POST['from'])) {
    header( "Location: $formurl" );
    exit ;
}
 
if (empty($contactname) || empty($from) || empty($companyname) || empty($contactnumber) || empty($teeth) || empty($quantity) || empty($chknotest)/* || empty($dpmoduletext)  || empty($dpmoduledrop) || empty($currentaddress) || empty($rfqreference) || empty($pressureangle) ||  empty($helixangle) || empty($helixhand) || empty($pitchtext) || empty($pitchdrop) || empty($gauge) || empty($typefit) || empty($facetext) || empty($facedrop) || empty($quantity) || empty($materials) ||empty($notes) */) {
   header( "Location: $errorurl" );
   exit ;
}
 
$contactname = strtok( $contactname, "\r\n" );
$email = strtok( $email, "\r\n" );
if (get_magic_quotes_gpc()) {
 
    $chkno = stripslashes( $chkno );
 
    $companyname = stripslashes( $companyname );    
    $currentaddress = stripslashes( $currentaddress );
    $contactnumber = stripslashes( $contactnumber );
    $rfqreference = stripslashes( $rfqreference );
    $teeth = stripslashes( $teeth );    
    $dpmoduletext = stripslashes( $dpmoduletext );  
    $dpmoduledrop = stripslashes( $dpmoduledrop );
    $pressureangle = stripslashes( $pressureangle );
    $helixangle = stripslashes( $helixangle );
    $helixhand = stripslashes( $helixhand );
    $pitchtext = stripslashes( $pitchtext );
    $pitchdrop = stripslashes( $pitchdrop );
    $gauge = stripslashes( $gauge );    
    $typefit = stripslashes( $typefit );
    $facetext = stripslashes( $facetext );
    $facedrop = stripslashes( $facedrop );
    $quantity = stripslashes( $quantity );  
    $materials = stripslashes( $materials );
    $notes = stripslashes( $notes );
}
 
ini_set("sendmail_from", $from);
 
mail($to, $subject, $message, $headers);
header( "Location: $thankyouurl" );
exit ;
 
?>
Post Reply