Hoe met contactformulier een mail ontvangen
http://main-site.nl/ deze server schijnt wel PHP te ondersteunen dus dat kan het probleem niet meer zijn.
Ik heb het volgende in elkaar geknutseld:
HTML:
<form action="mail.php" method="post">
<input name="name" placeholder="What is your name?" class="name" required />
<input name="emailaddress" placeholder="What is your email?" class="email" type="email" required />
<textarea rows="4" cols="50" name="subject" placeholder="Please enter your message" class="message" required></textarea>
<input name="submit" class="btn" type="submit" value="Send" />
</form>
en de PHP ziet er als volgt uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$recipient="[email protected]";
$name=$_POST["name"];
$emailaddress=$_POST["emailaddress"];
$subject=$_POST["subject"];
$mailheader = "From: $emailaddress \r\n";
$mailBody="Name: $Name\nEmail: $emailaddress\n\n$subject";
mail($name, $emailaddress, $subject, $mailheader) or die("Error!");
echo "Thank You!"
?>
$recipient="[email protected]";
$name=$_POST["name"];
$emailaddress=$_POST["emailaddress"];
$subject=$_POST["subject"];
$mailheader = "From: $emailaddress \r\n";
$mailBody="Name: $Name\nEmail: $emailaddress\n\n$subject";
mail($name, $emailaddress, $subject, $mailheader) or die("Error!");
echo "Thank You!"
?>
Ik kan er maar niet achterkomen waar ik fout ga. Ik heb in de kop net als bij CSS en JS een regel toegevoegd naar mail.php, dat ziet er dan als volgt uit: <link rel="stylesheet" href="php/mail.php" type="text/css" /> maar helaas zonder resultaat. ( moet een .PHP bestand ook in de kop vermeldt worden voor verwijzing net als .css en .js, of hoeft dat niet?) Maar helaas had het toevoegen van deze regel ook geen effect. Kan iemand mij vertellen wat ik fout doe?
Ik dank alvast voor de moeite.
mail() verkeerd aan:
mail($name, $emailaddress, $subject, $mailheader);
moet zijn:
mail($emailaddress, $subject, $mailBody, $mailHeader);
of met:
$to = $name.' <'.$emailaddress.'>'; // bv. userName <[email protected]>
mail($to, $subject, $mailBody, $mailHeader);
Maar er zijn wat limitaties aan deze $to, zie de RFC.
Als je het simpel wilt houden, gebruik gewoon $emailaddress.
Je roept mail($name, $emailaddress, $subject, $mailheader);
moet zijn:
mail($emailaddress, $subject, $mailBody, $mailHeader);
of met:
$to = $name.' <'.$emailaddress.'>'; // bv. userName <[email protected]>
mail($to, $subject, $mailBody, $mailHeader);
Maar er zijn wat limitaties aan deze $to, zie de RFC.
Als je het simpel wilt houden, gebruik gewoon $emailaddress.
<head>
<link rel="stylesheet" href="php/mail.php" type="text/css" media="screen" />
</head>
<div id="form">
<form action="mail.php" id="contactForm" method="post">
<span>Name</span>
<input type="text" name="name" class="name" placeholder="Enter your name" tabindex=1 />
<span>E-mail</span>
<input type="text" name="email" class="email" placeholder="Enter your email" tabindex=2 />
<span id="captcha"></span>
<input type="text" name="captcha" class="captcha" maxlength="4" size="4" placeholder="Enter captcha code" tabindex=3 />
<span>Message</span>
<textarea class="message" name="message" placeholder="Enter your message" tabindex=4></textarea>
<input type="submit" name="submit" value="Send e-mail" class="submit" tabindex=5>
</form>
De mail.php heb ik als volgt aangepast:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$to = '[email protected]';
$subject = 'Contact formulier';
$email = $_POST['email'];
$message = $_POST['message'];
$headers = 'From: <a href="mailto:[email protected]">main-site</a>' . "\r\n" .
'Reply-To: <a href="mailto:[email protected]">main-site</a>' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
$to = '[email protected]';
$subject = 'Contact formulier';
$email = $_POST['email'];
$message = $_POST['message'];
$headers = 'From: <a href="mailto:[email protected]">main-site</a>' . "\r\n" .
'Reply-To: <a href="mailto:[email protected]">main-site</a>' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
Ik ontvang nu een mail met, aan: mijn eigen naam, antwoord aan: mijn eigen naam, omschrijving: contact formulier. Alleen de zaken die ingevuld worden op het contact formulier worden niet meegestuurd. Wat doe ik hier in fout?
Headers kloppen niet.
Sorry gaat me boven mijn pet,( hij is niet hoog maar toch) waar moet ik dit toevoegen en waarkan ik dan zien wat er aan de hand is. Ik heb hem aan het einde van het php script toegevoegd ( voor de ?> ) maar dan ontvang ik geen mail meer.
Dan moet je wel in ieder geval een array zien met je waardes die je verstuurt.
plaatsen en waar kan ik die array vinden?
$_POST['email'] (oftewel $email) wordt nergens gebruikt (komt niet in $message terug).
En zoals SanThe aangeeft klopt er weinig van de mail headers.
Laat $headers anders gewoon weg, het voegt niets toe aan je e-mail, die toch enkel bestaat uit simpele tekst.
Pas als je "rijk gevulde" berichten wilt gaan opstellen waarin HTML gebruikt wordt (denk aan een nieuwsbrief in huisstijl van de website) of je attachments aan je bericht wilt hangen worden headers pas interessant.