Send file attachments but they arrive without content!
Posted: Thu Nov 20, 2008 7:58 am
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
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 ;
?>