Reputation: 113
Basically the following code is an enquiry form that when the website user fills out, it sends the email to my email address. But something isn't working...
Here's the php:
<?php
$field_name = $_POST['efName'];
$field_email = $_POST['efEmail'];
$field_phone = $_POST['efPhone'];
$field_date = $_POST['efTravelDate'];
$field_duration = $_POST['efLengthOfStay'];
$field_otherInfo = $_POST['efOtherInfo'];
$mail_to = '[email protected]';
$subject = 'Enquiry Applicant-'.$field_name;
$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Phone: '.$field_phone."\n";
$body_message .= 'Date: '.$field_date."\n";
$body_message .= 'Duration: '.$field_duration."\n";
$body_message .= 'otherInfo: '.$field_otherInfo."\n";
$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";
$mail_status = mail($mail_to, $subject, $body_message, $headers);
if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
alert('Enquiry Sent.');
window.location = 'index.html';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
alert('Enquiry form failed to send. \n Please try again, or send an email to [email protected]');
window.location = 'index.html';
</script>
<?php
}
?>
and here's the Html body:
<body>
<fieldset style="display:block; width:500px;">
<form action="enquiry.php" method="post">
<table>
<tr> <td> <span class="enquiryFormHeader"> Enquiry Form </span> <p> </p></td> </tr>
<tr> <td> Name: </td> <td> <input type="text" name="efName" id="efName"> </td> </tr>
<tr> <td> Email: </td> <td> <input type="text" name="efEmail" id="efEmail"> </td> </tr>
<tr> <td> Phone or Moblie: </td> <td> <input type="text" name="efPhone" id="efPhone"> </td> </tr>
<tr> <td> Intended travel date: </td> <td> <input type="text" name="efTravelDate" id="efTravelDate"> </td> </tr>
<tr> <td> Intended length of stay: </td> <td> <input type="text" name="efLengthOfStay" id="efLengthOfStay"> </td> </tr>
<tr> <td valign="top"> Any other information: </td> <td> <textarea name="efOtherInfo" id="efOtherInfo"> </textarea> <p> </p> </td> </tr>
<tr> <td><input type="submit" value="Send Form" class="submitButton"> </td> </tr>
</table>
</form>
</fieldset>
</body>
If i do $mail_status = mail($mail_to, 'subject', 'body_message', 'headers');
it sends a basic email perfectly.
On all occasions the Enquiry Sent alert appears.
Anyone know why it wont work??
Upvotes: 1
Views: 284
Reputation:
Run a var_dump(get_defined_vars());
and ensure that they are set. Also check /var/mail/user
where user
is the PHP or Apache user, and see what errors are thrown at more of an OS level.
Upvotes: 1
Reputation: 96
1- Exactly, what do you get? An empty mail or no mail at all?
2- Try to debug your $_POST, like user1593858 said. Right after the php opening tag add this:
echo "<pre>";
print_r($_POST);
echo "</pre>";
and see if your fields are correct.
3- you say that if you do:
$mail_status = mail($mail_to, 'subject', 'body_message', 'headers');
it works; well try to substitute 'subject' with $subject
or 'body_message' with $body_message
until you isolate the problem.
Upvotes: 0