Der vollständigkeit halber:
Code:
$headers = "MIME-Version: 1.0\n".
"Content-Type: text/plain; charset=iso-8859-1\n".
"From: \"".$_POST['yourname']."\" <".$_POST['from'].">\n".
"To: ".TO." <".TO.">\n".
"Date: ".date("r")."\n";
$name = preg_replace('#[^a-zA-Z0-9 ]#i', '', $_POST['yourname']);
$from = preg_replace('#[^a-zA-Z0-9 ]#i', '', $_POST['from']);
$subject = preg_replace('#[^a-zA-Z0-9 ]#i', '', $_POST['subject']);
$msg = "Name : ".$name."\n".
"E-Mail : ".$from."\n".
"Betreff : ".$subject."\n\n".$text;
$msg = stripslashes($msg);
Halt, stopp. Jetzt wird ja auch in der Adresse (from) das @ und der Punkt rausgefiltert. Das darf natürlich nicht sein. Desweiteren wird die Absendeadresse ja hier:
Code:
if ((empty($from) || empty($text)) || (!validate_email($_POST['from'])))
{
echo "
Bitte füllen Sie mindestens die Felder 'E-Mail Adresse' und 'Text' aus und überprüfen Sie ihre E-Mail Adresse
auf Gültigkeit.</p>";
}
else if (!mail($to, $_POST['subject'], $msg, $headers))
{
echo '
Es ist ein Fehler beim Senden der E-Mail aufgetreten.</p>';
}
else
{
echo '
Die E-Mail wurde erfolgreich gesendet.</p>';
}
Code:
function validate_email($email)
{
// Create the syntactical validation regular expression
$regexp = "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";
// Presume that the email is invalid
$valid = 0;
// Validate the syntax
if (eregi($regexp, $email))
{
list($username,$domaintld) = split("@",$email);
// Validate the domain
if (getmxrr($domaintld,$mxrecords))
$valid = 1;
} else {
$valid = 0;
}
return $valid;
}
überprüft.