php - Trying to send form data to my email

948

I have a basic html form on my website and I'm wanting the data entered into the form to be sent to my email once submitted, after submit button pressed I'm taken to the "Sent.html" which just displays a sent message on-screen, but when i check the email account I have not received the email..

HTML Form....

<form name="contactform" method="POST" action="formphp.php">

<table width="450px">
<tr>
    <td valign="top">
    <label for="name">Name *</label>
</td>
    <td valign="top">
    <input  type="text" name="Name" maxlength="50" size="30">
</td>
</tr>
<tr>

    <td valign="top"">

    <label for="email">Email *</label>
</td>
    <td valign="top">
    <input  type="text" name="Email" maxlength="50" size="30">
</td>
</tr>

<td valign="top">

    <label for="subject">Subject *</label>
</td>
    <td valign="top">
    <input  type="text" name="Subject" maxlength="50" size="30">
</td>
</tr>

<tr>
    <td valign="top">
    <label for="questions">Question/Feedback *</label>
</td>
    <td valign="top">
    <textarea name="Question" cols="40" rows="5"></textarea>
</td>
</tr>

<tr>
    <td colspan="2" class="page_speed_181809701">
    <input type="submit" value="Submit">
</td>
</tr>
</table>
</form>

PHP code...

<?php
/* set email */
$myemail = "[email protected]";

/* declare id */
$Name = $_POST['Name'];
$Email = $_POST['Email'];
$subject = $_POST['Subject'];
$Questions = $_POST['Questions'];

/* set subject heading */
$subject = "Subject";

/* Message */
$message = "$Name + $Email + $Questions

";

/* redirect this form after email sent */
header("location: sent.html");
?>
967

Answer

Solution:

Try using PHPMailer library: https://github.com/PHPMailer/PHPMailer

$mail = new PHPMailer(true); 

$html = '
<!DOCTYPE html>
<html>
<head>
    <title>Contact</title>
</head>
<body>
    CONTENT HERE
</body>
</html>
';

try {
    $mail->AddAddress('[email protected]', 'Domain Name');
    $mail->SetFrom('[email protected]', 'Domain Name');
    $mail->Subject = 'Contact from domain.com';
    $mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; 
    $mail->MsgHTML($html);
    if(!$mail->send()) {
       echo 'Message could not be sent.';
       echo 'Mailer Error: ' . $mail->ErrorInfo;
       exit;
    }else{
       header("location: sent.html");
    }
} catch (phpmailerException $e) {
    echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
    echo $e->getMessage(); //Boring error messages from anything else!
}
853

Answer

Solution:

The issue with your php code is that you never actually sent the email. To send mail in php, you use this syntax:

mail($sendto, $subject, $msg)

In your case, you would put the code right after you set your $message, and the code would look like this:

mail($myemail, $subject, $message)

For more info regarding php mail, read here: http://php.net/manual/en/function.mail.php

764

Answer

Solution:

Add the following code insted ofheader("location: sent.html");

if(mail($Email,$subject,$message))
    header("location: sent.html");
else
   die('Failed to send an email');

People are also looking for solutions to the problem: mysql - Format php datetime as "Wednesday, April 16, 2014 at 2:24 PM"

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.