YouTube

Mit dem Laden des Videos akzeptieren Sie die Datenschutzerklärung von YouTube.
Mehr erfahren

Video laden

In diesem Video zeige ich euch, wie wir mit PHP ganz einfach ohne Zusatzfunktionen eine E-Mail versenden. Diese E-Mail wird die Opt-In-Mail sein, welche verpflichtend in Deutschland ist. Hierfür generieren wir einen eindeutigen Key mit einem Link und senden diesen mit Bitte um Bestätigung an die im Formular angegebene E-Mail-Adresse.

+++ WICHTIG: Damit die mail-Funktion eine Mail versenden kann, muss auf dem System, auf dem sie ausgeführt wird, ein Mailserver eingerichtet sein. Somit funktioniert diese Methode standardmäßig nicht, wenn man gängige Tools wie XAMPP lokal nutzt. Auf einem Webserver/Webspace sollte es allerdings ohne weitere Probleme funktionieren +++


Quellcode herunterladen


Quellcode index.php:

<?php
    require_once 'database.php';
    $db = new DB();

    if($_POST['eintragen']) {
        $name = $_POST['name'];
        $email = $_POST['email'];
        $optin_key = sha1(uniqid());

        if($db->subscribeToNewsletter($name, $email, $optin_key)) {
            $betreff    = "Bitte bestätige deine Newsletter-Anmeldung bei TutCubeDE";
            $header     = [
                'From' => 'TutCubeDE <info@tutcube.de>',
                'Reply-To' => 'info@tutcube.de',
                'Content-Type' => 'text/html'
            ];
            $inhalt     = " Hey du!
                            <br />
                            Cool, dass du Dich für den Newsletter angemeldet hast.
                            <br /><br />
                            Bitte bestätige kurz mit Klick auf folgenden Link deine Anmeldung für den besten Newsletter 
                            der Welt: 
                            <a href='https://tutcube.de/dev/newsletter/newsletter_confirm.php?key=" . $optin_key . "'>
                                https://tutcube.de/dev/newsletter/newsletter_confirm.php?key=" . $optin_key . "
                            </a>
                            ";

            if(mail($email, $betreff, $inhalt, $header)) {
                echo "Vielen Dank! Wir haben Dir eine Mail gesendet. Bitte bestätige die Anmeldung!";
            } else {
                echo "Leider konnten wir Dir gerade keine Mail senden, da ist wohl etwas schief gelaufen :(";
                // @todo Datensatz aus Datenbank löschen
            }
        } else {
            echo "Leider trat ein Problem beim Eintragen in den Newsletter auf. Bitte probiere es später erneut! :(";
        }
    }
?>

<html>
    <head>
        <title>Newsletter</title>
        <meta charset="UTF-8"> 
        <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    <body>
        <div id="wrapper" class="shadow">
            <h1>Zum Newsletter anmelden</h1>
            <form action="index.php" method="POST">
                <table border="0">
                    <tr>
                        <td>Name:</td>
                        <td><input type="text" name="name" required /></td>
                    </tr>
                    <tr>
                        <td>E-Mail:</td>
                        <td><input type="email" name="email" required /></td>
                    </tr>
                    <tr>
                        <td colspan="2"><input type="checkbox" name="datenschutz" value="datenschutz_ok" required /> Mit Anmeldung zum Newsletter stimme ich den Datenschutzbestimmungen zu. Der Newsletter wird ausschließlich dazu verwendet, Dich über neue Inhalte von TutCubeDE zu informieren. Gelegentlich können auch interessante Inhalte von oder über TutCubeDE verteilt werden.</td>
                    </tr>
                    <tr>
                        <td colspan="2"><input type="submit" value="Eintragen" name="eintragen" /></td>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>

Quellcode database.php:

<?php
    class DB {
        private static $db_username 	= "c1newsletter";
        private static $db_password 	= "fgwgjMQ!4RD3";
        private static $db_host 		= "localhost";
        private static $db_name			= "c1newsletterdb";
        private static $db;

        function __construct() {
            try {
                self::$db = new PDO("mysql:host=" . self::$db_host . ";dbname=" . self::$db_name,  self::$db_username , self::$db_password);
            } catch(PDOException $e) {
                echo "Datenbankverbindung gescheitert!";
                die();
            }
        }

        function subscribeToNewsletter($name, $email, $optin_key) {
            $stmt = self::$db->prepare("INSERT INTO newsletter_user (name, email, optin_key) VALUES(:name, :email, :optin_key)");
            $stmt->bindParam(":name", $name);
            $stmt->bindParam(":email", $email);
            $stmt->bindParam(":optin_key", $optin_key);

            if($stmt->execute() && $stmt->rowCount()) {
                return true;
            } else {
                return false;
            }
        }
    }

Quellcode style.css:

body {
    margin-top: 20px;
    font-family: Arial, Helvetica, sans-serif;

    background: #70737c;
}

#wrapper {
    margin-left: auto;
    margin-right: auto;
    width: 900px;
    background-color: #fefefe;
    padding: 40px;
}

.shadow {
    -webkit-box-shadow: 0px 0px 10px #000;
    -moz-box-shadow: 0px 0px 10px #000;
    box-shadow: 0px 0px 10px #000;
}

.shadow-menu {
    -webkit-box-shadow: 0px 0px 3px #000;
    -moz-box-shadow: 0px 0px 3px #000;
    box-shadow: 0px 0px 3px #000;
}