joey942
joey942

Reputation: 159

HTML and PHP Code Not Sending Email

I've been trying to send an email using PHP, and I've found this code that suits my needs as it will easily fit into my current website's code. However, I put this entire code into a file and tested it out, and it won't send the email.

Code:

<?php 
if(isset($_POST['submit'])){
    $to = "[email protected]"; // this is your Email address
    $from = $_POST['email']; // this is the sender's Email address
    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $subject = "Form submission";
    $subject2 = "Copy of your form submission";
    $message = $first_name . " " . $last_name . " wrote the following:" . "\n\n" . $_POST['message'];
    $message2 = "Here is a copy of your message " . $first_name . "\n\n" . $_POST['message'];

    $headers = "From:" . $from;
    $headers2 = "From:" . $to;
    mail($to,$subject,$message,$headers);
    mail($from,$subject2,$message2,$headers2); // sends a copy of the message to the sender
    echo "Mail Sent. Thank you " . $first_name . ", we will contact you shortly.";
    // You can also use header('Location: thank_you.php'); to redirect to another page.
    }
?>

<!DOCTYPE html>
<head>
<title>Form submission</title>
</head>
<body>

<form action="" method="post">
First Name: <input type="text" name="first_name"><br>
Last Name: <input type="text" name="last_name"><br>
Email: <input type="text" name="email"><br>
Message:<br><textarea rows="5" name="message" cols="30"></textarea><br>
<input type="submit" name="submit" value="Submit">
</form>

</body>
</html> 

I am unable to get this to send an email to "[email protected]". Am I doing something wrong, or did I forgot to fill something out?

Upvotes: 1

Views: 134

Answers (2)

Pravesh Agrawal
Pravesh Agrawal

Reputation: 879

As, you are using it locally, and your mail server is not configured:

You can configure Gmail SMTP for that to work like this:

// Pear Mail Library
require_once "Mail.php";

$from = '<[email protected]>';
$to = '<[email protected]>';
$subject = 'Hi!';
$body = "Hi,\n\nHow are you?";

$headers = array(
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
);

$smtp = Mail::factory('smtp', array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => '465',
        'auth' => true,
        'username' => '[email protected]',
        'password' => 'passwordxxx'
    ));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    echo('<p>' . $mail->getMessage() . '</p>');
} else {
    echo('<p>Message successfully sent!</p>');
}

It also occurs sometimes that either your sender email or recipient email should be an email that is configured on your website's mail server or cPanel. Due to security reasons, most hosting service providers do not allow this thing. Change it to an email address which is configured on your website's mail server, it should work then.

Upvotes: 1

hihebark
hihebark

Reputation: 5

the problem is not the code but you aren't able to send e-mail without a "SMTP" server! Link

Upvotes: 1

Related Questions