Beste mensen op een of andere manier verstuurd hij het mailtje niet maar krijg ik wel het bericht hij is verstuurd.

Expres even geen beveiligingen erin puur om alleen te kijken hoe alles werkt. Alleen doet hij het dus niet om een of andere reden.

<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!

// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; //

// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{

$datum = date('d/m/Y H:i:s');

$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";

$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['email']) . "\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";

$inhoud_mail .= "===================================================\n\n";


$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';

$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes

$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes

if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
echo '<h1>Het contactformulier is verzonden</h1>

<p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
}
}
?>
En de html moet dan ook wel valid zijn.


// Een geldig emailadres voor errors
$error_emailadres = '[email protected]';

Lijkt mij geen geldig adres.
- SanThe - op 26/11/2014 03:14:32

En de html moet dan ook wel valid zijn.


// Een geldig emailadres voor errors
$error_emailadres = '[email protected]';

Lijkt mij geen geldig adres.

Ik denk dat hij dit expres heeft gedaan om geen spams te krijgen.
Het kan bovendien geen kwaad om op lijn 55 een else in te bouwen, die aangeeft dat er niet gemaild kan worden.
Afgelopen dagen erg druk gehad, met een sinterklaas cadeau's en verjaardagen
Vandaag er wel even aan gezeten!

Graag jullie feedback hierop!

<?php
session_start(); //Altijd bovenaan!

// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST') //Controleert of op de knop is gedrukt!
{
// set datum
$datum = date('d/m/Y H:i:s');

$email = "===================================================\n";
$email .= "Ingevulde formulier " . $_SERVER['HTTP_HOST'] . "\n";
$email .= "===================================================\n\n";

$email .= "Emailadres: " . htmlspecialchars($_POST['email']) . "\n";
$email .= "Bericht: " . htmlspecialchars($_POST['bericht']) . "\n";
$email .= "Question: " . htmlspecialchars($_POST['question']) . "\n\n";

$email .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";

$email .= "===================================================\n\n";

//Headers

// Een korte benaming voor jouw website
$website_naam = 'Mijn site';
// Jouw eigen geldige emailadres
$eigen_emailadres = '[email protected]';
// Een geldig emailadres voor errors
$error_emailadres = '[email protected]';
// De naam van de verzender
$naam_verzender = 'Afzender';
// Het geldige emailadres van de afzender
$email_verzender = '[email protected]';
// Een geldig emailadres of helemaal leeg laten
$bcc_emailadres = '';
// HTML mail? True/False
$html = true;

// De headers samenstellen
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
$headers .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';

if (mail($eigen_emailadres, $_POST['onderwerp'], $email, $headers))
{

echo '<h1>Bedankt</h1>

<p>U ontvangt zo spoedig een reactie op u e-mail.</p>';
}
else
{
echo '<h1>Het contactformulier is niet verzonden</h1>

<p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden. Excuses voor het ongemak</p>';
}
}
?>
Ik mis enkel de validatie nog. En waarom maak je het formulier niet onder aan dit bestand?

Kun je direct het formulier nog een keer tonen als niet alles (goed) is ingevuld. Zo kun je bijvoorbeeld testen of er wel een geldig mailadres is ingevuld.

Beetje deze opzet:

<?php

function validate()
{
	// ............

	return true;
}

if ($_SERVER['REQUEST_METHOD'] == 'POST')
	if(validate())
	{
		// ... email versturen
		
		// nu naar een andere pagina sturen
		header('Location: index.php');
	}
?>
<html>
    <head>
        <title>Contact</title>
        <meta charset="UTF-8">
    </head>
    <body>
	<form action="" method="post">

		<!-- formuliervelden -->

	</form>
    </body>
</html


Dit kan op false want het is bij jou geen html.
$html = true;

Reageren