简体   繁体   中英

PHP Contact Form message not displaying in E-Mail

I have PHP script that works fine. When the email is sent, everything works fine except for the message. Here's what I get in the email: New Mail from:

 Name: asdf 
 Phone: 9879879879 
 Email: asdf@dfsg.com 

 Project Location: asdf 
 Message:

As you can see, the "Message: " doesn't show what was typed in the form. Here is the code: Cotnact form body { font-family: Verdana, sans-serif; font-size: 12px; }

Contact

Variables/ //Type in your email address to receive the mail $to = "ironspeed12@yahoo.com";

 //If you wish to show a logo in the mail, paste the URL here. //For example: http://mywebsite.com/mylogo.png //Remember http:// $logo_url = "http://arniesremodeling.com/Logo1.png"; /*VARIABLES END*/ if(isset($_POST['name'])){ $name = preg_replace('/[^A-Za-z0-9\\-]/','', $_POST['name']); $phone = preg_replace('/[^0-9]/',"", $_POST['phone']); $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); $location = preg_replace('/[^ A-Za-z0-9,\\-]/',"", $_POST['name']); $message = preg_replace('/[^ A-Za-z0-9,.?\\-]/',"", $_POST['message']); $ip_address = $_SERVER['REMOTE_ADDR']; if($name == "" or $phone == "" or $location == "" or $message == ""){ echo'One or more fields has not been filled out.<br> Please go back and try again.'; } elseif(strlen($phone) != 10){ echo'Invalid Phone Number.<br> Please enter a valid phone number.'; } elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){ echo'The email address could not be validated.<br> Please go back and verify your email address.'; } else{//All checks passed if(isset($logo_url) and strlen($logo_url) > 3){ $logo = '<img src="'.$logo_url.'" alt="" style="border:none;"><br><br>'; } else{ $logo = ""; } $headers = "From: Arnie's Remodeling"; $headers .= "Reply-To: $email\\r\\n"; $headers .= "MIME-Version: 1.0\\r\\n"; $headers .= "Content-Type: text/html; charset=utf-8\\r\\n"; $message = '<html><head><style>body {font-family: Verdana; font-size: 12px;} </style></head><body>'; $message .= "$logo New Mail from:<br><br> Name: $name <br> Phone: $phone <br> Email: $email <br> IP: $ip_address <br><br> Project Location: $location <br> Message:<br> ".nl2br($message)." </body></html>"; $sendMail = mail($to, $location, $message, $headers); if($sendMail){ echo'Thank You, the mail has been successfully sent!<br><br>'; } else{ echo'An error occurred and the mail could not be sent.<br> Please try again later.'; } } } else{ header("location:contact.html"); } ?> </body> </html> 

Do not reuse the $message variable. First you set it to this:

$message = preg_replace('/[^ A-Za-z0-9,.?\-]/',"", $_POST['message']);

And then a few lines later you set it to this:

$message = '<html><head><style>body {font-family: Verdana; font-size: 12px;}        </style></head><body>';

For a quick fix - replace the first line with:

$mess= preg_replace('/[^ A-Za-z0-9,.?\-]/',"", $_POST['message']);

And then at the end of the script use this:

".nl2br($mess)."

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM