ECS-Webhosting bietet Shared-Webhosting, Server, VServer unter Windows 2003, Windows 2008 und Linux, ueber 300 TLD Domains registrieren aus einer Hand sowie Microsoft Hosted Exchange 2003 Loesung KontaktKontakt
Deutschland: 0800 4 967 967 00
Ausland: +49 911 4 967 967 00

E-Mail mit PHP verschicken inkl. Spamschutz

Expand / Collapse
 
     

E-Mail mit PHP verschicken inkl. Spamschutz


Problem:
Ich möchte ein Formular per E-Mail verschicken.

Lösung:
Legen Sie 2 Dateien an (datei1.htm und datei2.php) und kopieren jeweils den hier angezeigten Code hinein:

Datei datei1.htm

<html>
<body>

<!-- Formular an datei2.php schicken -->
<form method="post" action="datei2.php">

<!-- Formulareingaben -->
Absender E-Mail: <input type="text" name="absender_email" style="width: 300px;"><br>
Absender-Name:  <input type="text" name="absender_name" style="width: 300px;"><br>
Dein Kommentar:<br>
<textarea name="kommentar" style="width: 300px; height: 60px;"></textarea><p>

<!-- Button "Abschicken" anzeigen -->
<input type="submit" value="Abschicken">

</form>

</body>
</html>


Datei datei2.php

<html>
<body>

<?php

// Empfänger der E-Mail:
define(EMPFAENGER_EMAIL,"
empfaenger@domain.de");

/**
* @desc Funktion zum Schutz gegen Spamming
* @author Ingo Fritz
* @copyright ECS-Webhosting, Ingo Fritz
* @param sWert(String): Zu ueberpruefender Eingabetext
* @param lMaxLength(Long): Optional, maximale Laenge von sWert: Ggf. abschneiden. Default: 0 = unbegrenzte Laenge
* @param bEMail(Boolean): Optional, ist sWert eine E-Mail? Werte: [true|false] Default: false
* @return (String): korrigierter sWert Text
*/
function MailSetSecure($sWert,$lMaxLength = 0,$bEMail = false)
{
    // Eingabe auf lMaxLength Zeichen kuerzen:
    if ($lMaxLength > 0) {$sWert = substr($sWert,0,$lMaxLength-1);}

    if ($bEMail === true)
    {
       
// Nur bestimmte Zeichen fuer E-Mail Adresse zulassen:
        $sWert = preg_replace( "/[^a-z0-9 !?:;,.\/_\-=+@#$&\*\(\)]/im", "", $sWert);
    }
   
   
// Befehle fuer weitere E-Mail Empfaenger entfernen:
    $sWert = preg_replace( "/(content-type:|bcc:|cc:|to:|from:)/im", "", $sWert);

    return ($sWert);
}

// ----------------------------------------------------

$errortext = "";
if ($absender_email == "") {$errortext .= "Sie haben keine E-Mail angegeben!<br>";}
if ($absender_name == "") {$errortext .= "Sie haben keinen Absender-Namen angegeben!<br>";}
if ($kommentar == "") {$errortext .= "Sie haben keine Nachricht angegeben!<br>";}

// Formularfelder gegen Spamming absichern:
$absender_email = MailSetSecure($absender_email,100,true);
$absender_name = MailSetSecure($absender_name,50);
$kommentar = MailSetSecure($kommentar,255);

// E-Mail Betreff
$sSubject = "Anfrage " . $absender_name;

// E-Mail Text
$sMessage =
"
Ansprechpartner: $absender_name
E-Mail:          $absender_email
---------------------------------------------------
Kommentar:
$kommentar
";

// Prüfung auf URLs, Links etc.:
if (ereg("http:",$sMessage) || ereg("
www.",$sMessage) || ereg("a href",$sMessage))
{
    $errortext .= "Die Nachricht enthält verbotene Zeichen! Zustellung verweigert.<br>";
}


if ($errortext != "")
{
    // Es traten Fehler auf, Nachricht NICHT verschicken:
    print "
<h2>Fehler beim E-Mail Versand</h2>
<span style=\"color: #FF0000; font-weight: bold;\">$errortext</span>
<p>
    ";
} else
{
   
// Nachricht verschicken:
    $bSend = mail(EMPFAENGER_EMAIL,$sSubject,$sMessage,"From: $absender_email\nReply-to: $absender_email\n");
    if ($bSend == 1)
    {
       
// E-Mail OK
        print "
<h2>Vielen Dank!</h2>
Die Nachricht wurde erfolgreich verschickt. Wir werden uns so bald wie möglich bei Ihnen melden.
<p>
        ";
    } else
    {
       
// Ein Fehler ist aufgetreten
        print "
<h2>Fehler beim E-Mail Versand</h2>
<span style=\"color: #FF0000; font-weight: bold;\">Es trat ein Fehler beim Versand der E-Mail auf. Bitte erneut versuchen!</span>
<p>
        ";
    }
}
?>

</body>
</html>


Tags:

Deinen Kommentar hinzufügen


Name: *
Email Address:
Webseite:
Prüfcode:
*
 

Details
Zuletzt geändert:Montag, 24. Oktober 2011
Zuletzt geändert von: Ingo Fritz
Typ: HOWTO
Stufe: Novice
Beitrag noch nicht bewertet.
Beitrag wurde 1.831* angeschaut.
Optionen

Benötigen Sie Hilfe?
 
------------------
------------------
 
 
------------------
------------------
  Folge uns:
 
Twitter Facebook

© 2001 by ECS-Webhosting Nürnberg