Reputation: 39
I have this form done it complete and working fine when the form is submitted the information is emailed to an email id but all the content is shown in plain text when it delivers I want that when the form information reaches the email id it it should the field names in bold.
<?php
$errors = '';
$myemail = '[email protected]';//<-----Put Your email address here.
if(
empty ($_POST['fullname']) ||
empty ($_POST['martialstatus']) ||
empty ($_POST['dateofbirth']) ||
empty ($_POST['email']) ||
empty ($_POST['telephone']) ||
empty ($_POST['cell']) ||
empty ($_POST['graduation']) ||
empty ($_POST['yearatt']) ||
empty ($_POST['department']) ||
empty ($_POST['program']) ||
empty ($_POST['permanentaddress']) ||
empty ($_POST['currentemp']) ||
empty ($_POST['designation']) ||
empty ($_POST['selfemp']) ||
empty ($_POST['officeemail']) ||
empty ($_POST['officetele']) ||
empty ($_POST['portfolio']) ||
empty ($_POST['membership']))
{
$errors .= "\n Error: all fields are required";
}
$fullname = $_POST['fullname'];
$martialstatus = $_POST['martialstatus'];
$dateofbirth = $_POST['dateofbirth'];
$email = $_POST['email'];
$telephone = $_POST['telephone'];
$cell = $_POST['cell'];
$graduation = $_POST['graduation'];
$yearatt = $_POST['yearatt'];
$department = $_POST['department'];
$program = $_POST['program'];
$permanentaddress = $_POST['permanentaddress'];
$currentemp = $_POST['currentemp'];
$designation = $_POST['designation'];
$selfemp = $_POST['selfemp'];
$officeemail = $_POST['officeemail'];
$officetele = $_POST['officetele'];
$portfolio = $_POST['portfolio'];
$membership = $_POST['membership'];
if( empty($errors))
{
$to = $myemail;
$email_subject = "Membership Information: $fullname";
$email_body = "You have received a new message. ".
" Here are the details:\n Personal Information \n\n
Name: $fullname \n
Martial Status: $martialstatus \n
Date of Birth: $dateofbirth \n
Email: $email \n
Telephone: $telephone \n
Cell: $cell \n
Year of Graduation: $graduation \n
Years Attended: $yearatt \n
Department: $department \n
Program Attended: $program \n
Permanent Address: $permanentaddress \n\n
Career Information \n\n
Currently Employeed with: $currentemp \n
Designation: $designation \n
Self Employeed: $selfemp \n
Office Email: $officeemail \n
Office Telephone: $officetele \n
Portfolio: $portfolio \n\n
MemberShip \n\n
Type of MemberShip: $membership \n\n ";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email";
mail($to,$email_subject,$email_body,$headers);
//redirect to the 'thank you' page
header('Location: contact-form-thank-you.html');
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Contact form handler</title>
</head>
<body>
<!-- This page is displayed only if there is some error -->
<?php
echo nl2br($errors);
?>
</body>
</html>
Upvotes: 2
Views: 8360
Reputation: 4229
I took the liberty of re-writing quite a bit, mostly because there is so much repetition, and a huge security issue.
One could make several further improvements on this as well, but that's left as an exercise to the reader.
<?php
$errors = '';
$myemail = '[email protected]';//<-----Put Your email address here.
$fields = array(
'fullname' => 'Name',
'martialstatus' => 'Martial Status',
'dateofbirth' => 'Date of Birth',
'email' => 'Email',
'telephone' => 'Telephone',
'cell' => 'Cell',
'graduation' => 'Year of Graduation',
'yearatt' => 'Years Attended',
'department' => 'Department',
'program' => 'Program Attended',
'permanentaddress' => 'Permanent Address',
'currentemp' => 'Currently Employeed with',
'designation' => 'Designation',
'selfemp' => 'Self Employeed',
'officeemail' => 'Office Email',
'officetele' => 'Office Telephone',
'portfolio' => 'Portfolio',
'membership' => 'Type of MemberShip',
);
// Don't allow HTML in form.
foreach ($_POST as $key => $value) {
$_POST[$key] = strip_tags($value);
}
$missing_fields = array_diff_assoc($fields, $_POST);
if (count($missing_fields) > 0) {
$errors .= "\n Error: all fields are required";
}
if (empty($errors)) {
$to = $myemail;
$email_subject = 'Membership Information: ' . $_POST['fullname'];
$email_body = 'You have received a new message. Here are the details:<br /> Personal Information <br/ ><br/ >';
foreach (array('fullname', 'martialstatus', 'dateofbirth', 'email', 'telephone', 'cell', 'graduation', 'yearatt', 'department', 'program', 'permanentaddress') as $key) {
$email_body .= $fields[$key] . ': <strong>' . $_POST[$key] . "</strong><br />";
}
$email_body .= "Career Information <br /><br />";
foreach (array('currentemp', 'designation', 'selfemp', 'officeemail', 'officetele', 'portfolio') as $key) {
$email_body .= $fields[$key] . ': <strong>' . $_POST[$key] . "</strong><br />";
}
$email_body .= "MemberShip <br /><br />";
foreach (array('membership') as $key) {
$email_body .= $fields[$key] . ': <strong>' . $_POST[$key] . "</strong><br />";
}
$headers = "From: $myemail\r\n";
$headers .= "Reply-To: $myemail\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
mail($to,$email_subject,$email_body,$headers);
//redirect to the 'thank you' page
header('Location: contact-form-thank-you.html');
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Contact form handler</title>
</head>
<body>
<!-- This page is displayed only if there is some error -->
<?php
echo nl2br($errors);
?>
</body>
</html>
Upvotes: 1
Reputation: 95141
You headers must always end with `\r\n"
This is wrong
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email";
It should be like this
$headers = "From: $myemail\r\n";
$headers .= "Reply-To: $email\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
You need to add HTML tags in your mail
Example
Name: <strong>$fullname</strong><br />
Upvotes: 2
Reputation: 7253
You'll need to add the Content-type
header, and add HTML tags to the email you're sending. So:
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email\n";
$headers .= "Content-type: text/html";
Also, you'll need to convert \n
to HTML line breaks, so:
$email_body = nl2br($email_body);
mail($to,$email_subject,$email_body,$headers);
Upvotes: 2
Reputation: 123397
Be sure to add headers, as specified on Mail page documentation
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
then use markup to compose your email
Upvotes: 2
Reputation: 64536
Bold text can be done with an HTML email, set the content type header:
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html;\r\n";
Use the <strong>
tag:
<strong>Name:</strong> $fullname <br />
Don't forget \n
won't show a new line in an HTML email, you'll need to use <br />
.
Upvotes: 5
Reputation: 9012
Make sure to send the email in HTML format and change the respective line to
Email: <b>$email</b> \n
Upvotes: 2