Question

I have an index.html and a contacto.php.

contacto.php is supposedly meant to send the user's info to multiple recipients but it's not sending.

This is my index.html (ignore the javascript)

<form action="contacto.php" method="POST">

        <fieldset style="margin: 0px 0 0 0"; >
<br/><br/>  <br/><br/>  <br/><br/>  <br/><br/>


<input maxlength="255" name="Form testing" size="20" type="hidden" value="Form-name-here" /><br>    

 <input value="Nome" onfocus="if (this.value == 'Nome') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Nome';}" maxlength="255" name="name" size="20" type="text" /><br>

<input value="Telemóvel" onfocus="if (this.value == 'Telemóvel') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Telemóvel';}" id="phone" maxlength="40" name="phone" size="20" type="text" /><br>

<input onfocus="if (this.value == 'Email') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Email';}" value="Email" id="email" maxlength="80" name="email" size="20" type="text" /><br>

<input onfocus="if (this.value == 'Localidade') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Localidade';}" value="Localidade" maxlength="255" name="location" size="20" type="text" /><br>

.

And this is my contacto.php:

<?php
 // Get Data
 $name = strip_tags($_POST['name']);
 $email = strip_tags($_POST['email']);
 $phone = strip_tags($_POST['phone']);
 $location = strip_tags($_POST['location']);

 $headers .="De: Form thingy <examplealpha@someemail.com>";
 $headers .="CC: Mail1 <example1@someemail.com>";
 $headers .=", Mail2 <example2@someemail.com>";

 header("Location: thankyou.html");  //Redirect to Thank You HTML page after email is sent


 // Send message
 mail( "example1@someemail.com", "Formulário Facebook Av. Grátis",
 "Name: $name\nEmail: $email\nPhone: $phone\nLocation: $location\n",
  $headers );
 ?>
Was it helpful?

Solution

Change:

$headers .="De: Form thingy <examplealpha@someemail.com>";

To:

$headers ="From: Form thingy <examplealpha@someemail.com>";

"De: is not standard as per PHP manual, use "From:....

http://php.net/manual/en/function.mail.php

http://php.net/manual/fr/function.mail.php

Full code:

<?php
// Get Data
$name = strip_tags($_POST['name']);
$email = strip_tags($_POST['email']);
$phone = strip_tags($_POST['phone']);
$location = strip_tags($_POST['location']);

$headers ="From: Form thingy <examplealpha@someemail.com>";
$headers .="CC: Mail1 <example1@someemail.com>";
$headers .=", Mail2 <example2@someemail.com>";

// Send message
mail( "example1@someemail.com", "Formulário Facebook Av. Grátis",
 "Name: $name\nEmail: $email\nPhone: $phone\nLocation: $location\n",
  $headers );

header("Location: thankyou.html");  //Redirect to Thank You HTML page after email is sent
?>

OTHER TIPS

put the header location redirect after the send not before

// Send message
mail( "example1@someemail.com", "Formulário Facebook Av. Grátis",
 "Name: $name\nEmail: $email\nPhone: $phone\nLocation: $location\n",
 $headers );

 header("Location: thankyou.html");  //Redirect to Thank You HTML page after email is sent
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top