I'm having trouble with this php mail code. I'm not sure if I altered it on accident with I copied and pasted it from other sites i've worked on. It send the email however its blank, it only shows:

Name:
Phone:
Email:
Description:


HTML code

<DIV style="    background-image: url(background.png);position: absolute; top:555px; left:40px; width:260px; height:320px;  border: 2px black solid; color:white;"> 
             <form method="post" action="php/thanks.php"> <br><br><br>

              <b>Name:</b><br> <input name="nombre" type="text" STYLE="background: white; border: 2px black solid;"><br > 
              <b>Phone:</b><br><input name="phone" type="text" STYLE="background: white; border: 2px black solid;"><br > 
              <b>Email:</b> <br><input name="email" type="text" STYLE="background: white; border: 2px black solid;"><br > 
              <b>Message:</b><br > 
              <textarea name="comments" rows="4" cols="27" STYLE="background: white; border: 2px black solid;"></textarea><br > 
              <input type="submit" value="send"> 
</div>

PHP php/thanks.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<body>

<?php 
$name = $_post['nombre'];
$phone = $_post['phone'];
$email = $_post['email'];
$comments = $_post['comments'];
$msg .= "            Name:  ".$name."\n";
$msg .= "           Phone:  ".$phone."\n";
$msg .= "           Email:   ".$email."\n";
$msg .= "        Description:  

". $comments."\n";
$recipient = "email@address.com";
$subject = "New Lead";
mail($recipient, $subject, $msg);
?> 

<font size="7">Thank You</font>

</body>

</html>

Dani AI

Generated

Quick summary: the blank message body means your script is building the labels but not getting the submitted values. The usual causes are mismatched names/case, malformed HTML form, or reading the wrong superglobal — and a few other pitfalls on Windows/WAMP. is right to call out the superglobal, and / are right about server config; here are practical checks and a small, safe example to fix and debug it.

  1. Fast checks (do these first)
  • Open the page source and confirm every input has a name="..." that exactly matches what the PHP expects (for example nombre, phone, email, comments).
  • Make sure the form tag is properly closed (</form>). In the posted HTML the </form> is missing — that can make browsers submit nothing or behave unpredictably.
  • Confirm the submit button is inside the <form>...</form> block.
  • Temporarily dump what PHP receives: write file_put_contents(__DIR__.'/post_dump.txt', print_r($_POST, true)); at the top of the processing script to see the raw data.
  1. Minimal robust pattern (replace placeholders)
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// debug: saves what the browser sent
file_put_contents(__DIR__.'/post_dump.txt', print_r($_POST, true));

// safe retrieval + simple sanitation
$name     = trim($_POST['nombre'] ?? '');
$phone    = trim($_POST['phone'] ?? '');
$emailRaw = trim($_POST['email'] ?? '');
$email    = filter_var($emailRaw, FILTER_VALIDATE_EMAIL) ? $emailRaw : 'no-reply@yourdomain.com';
$comments = trim($_POST['comments'] ?? '');

// prevent header injection
$cleanEmail = str_replace(array("\r","\n"), '', $email);
$body = "Name: $name\nPhone: $phone\nEmail: $cleanEmail\n\nComments:\n$comments\n";

$headers  = "From: no-reply@yourdomain.com\r\n";
$headers .= "Reply-To: $cleanEmail\r\n";
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";

mail('you@yourdomain.com', 'New Lead', $body, $headers);
  1. Additional notes
  • Initialize variables (avoid using .= on an uninitialized variable).
  • On local WAMP, mail() often needs an SMTP relay or use a library (PHPMailer/SMTP) with authentication — otherwise messages may not be delivered reliably.
  • Always validate and sanitize inputs and strip CR/LF from header-related fields to prevent header injection.
  • Use the debug dump above; if post_dump.txt is empty, the problem is in the HTML/form. If it contains values but the email body is empty, check your build of the $body string and the headers.

Recommended Answers

All 10 Replies

$_post should be $_POST.

er...unless there is another, preceding script that is creating $_post as a filtered, cleaned up version of $_POST. If not, you should filter the form info to prevent potential massive spam abuse.

filter the HTML or the PHP? I'm sorry not too sure what you mean or how to do that.

I tried what you suggested and put it in caps... same problem

Add error_reporting(E_ALL); to the top of your thanks.php script. See if any warnings, notices, errors come up.

apart from $_POST which madCoder, it looks perfectly fine.

Is your PHP installation configured to send mail?

How to make this?
i am using wamp server
PHP installation configured to send mail
i know that we have to set the php.ini file but i am not getting how to set it
please help me

For setting mail setting in your wamp server

First you should have existence of company mail server otherwise you can use google mail server.

For Company server

search 'mail function' in your php.ini file

make the following changes..

[mail function]
; For Win32 only.
SMTP = mail.[company_name].com
smtp_port = 25

; For Win32 only.
sendmail_from = [sender mail id]

For google mail server setting

thanks for the reply
hey what's this company mail server??

if you are using localhost,

[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

k
thanks

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.