View Full Version : mail form

08-26-2008, 10:54 AM
hey guys ive been stressing out all weekend over something probably quite simple!

basically i have this form http://www.lincolnwebenterprises.co.uk/petercole/attachform.html

and behind it is this code:

<title> Sending Email </title>

// Read POST request params into global vars
$subject = "Steel Beam Design Calculation";
$recipient = "d.reaper@hotmail.co.uk";
$from = $_POST['from'];
$message = $_POST['message'];

/* Page to display if script called directly or if mandatory fields empty */
$try_again = "errorattach.html";

/* Page to display if mail was sent ok */
$return_ok = "thank-you-attach.html";

/* Page to display if mail went wrong */
$return_bad = "oooop.html";

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

$headers = "From: $from";

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

// 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: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
//"Content-Disposition: attachment;\n" .
//" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n" .

// Send the message
$ok = @mail($recipient, $subject, $message, $headers);
if ($ok) {
echo "<p>$return_ok</p>";
} else {
echo "<p>$try_again</p>";

I want it so that each of the form fields are displayed in the email on seperate lines, as at the moment just the message (details) are is displayed.

can anyone please help me??


08-26-2008, 09:59 PM
Take a look at this: http://us3.php.net/manual/en/function.mail.php Example 4. You must use the HTML mine type, and use the <br /> or <br> in your email.

08-27-2008, 09:17 AM
i dont get how to intergrate that into the code i have?

Ive tried and tried but keep getting different errors, i thought you could just set a var to each field such as $name = $_POST ['name'] then call it later on in the code, but not sure what to use to call it.

08-27-2008, 11:00 PM
In your code change:

$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";

To this:

$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/html; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";

And then after each sent variable, concatenate a <br />.