'tobias-radloff.de', */ 'domain' => 'localhost', // string concatenated with email address to create a non-recreatable md5 hash 'uniqueKey' => '***REMOVED***', // works like password salt // file name of confirm script 'confirmScript' => '/confirm.php', // status code to be used when redirection to success or error page 'statusCode' => 'HTTP/1.1 303 See Other', // array of SQL statements used 'sql' => [ 'create_table' => 'CREATE TABLE IF NOT EXISTS subscribers (id INTEGER PRIMARY KEY, email TEXT NOT NULL UNIQUE, name TEXT);', 'create_record' => 'INSERT INTO subscribers(email, name) VALUES(:e, :n);', 'read_record' => 'SELECT 1 FROM subscribers WHERE email = :e;', 'update_record' => '', 'delete_record' => 'DELETE FROM subscribers WHERE email = :e;' ] ]; // complete site URL $general['siteURL'] = 'https://' . $general['domain']; // SMTP server information $smtp = [ 'host' => '***REMOVED*** 'port' => 587, 'username' => 'tobias', 'password' => '***REMOVED***', 'auth' => TRUE, 'fromAddress' => '***REMOVED***', // 'newsletter@tobias-radloff.de' 'fromName' => 'Tobias Radloffs Newsletter', ]; // body of confirmation email $bodyConfirmation = [ 'Hallo!', 'Bitte bestätige die Anmeldung für meinen Newsletter, indem du auf den folgenden Link klickst:', '%Placeholder%', 'Bis bald und viele Grüße, Tobias' ]; // contents of confirmation email $mailConfirmation = [ 'subject' => 'Newsletter-Anmeldung bestaetigen', 'bodyHTML' => '
' . implode('
', $bodyConfirmation) . '
', 'bodyText' => implode("\n\n", $bodyConfirmation) ]; // database information $db = [ 'sqlite' => [ 'dsn' => 'sqlite:../newsletter.sqlite', ], 'mysql' => [ 'dsn' => '', 'host' => '', 'port' => '', 'username' => '', 'password' => '' ] ]; function GetConfirmationHash($confEmail) { global $general; return md5($confEmail . $general['uniqueKey'] ); } // connects to database and returns PDO object function getPDO($dbType = 'sqlite') { global $db; return new \PDO($db[$dbType]['dsn']); } // Sends an email to single recipient with subject and body specified in an array. Returns an error message on failure, TRUE on success. function SendEmail($recipientAddress, $mailContents, $link = NULL) { global $general, $smtp; $mail = new PHPMailer(true); try { //Server settings // $mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output $mail->isSMTP(); $mail->Host = $smtp["host"]; $mail->SMTPAuth = $smtp["auth"]; $mail->Username = $smtp["username"]; $mail->Password = $smtp["password"]; //$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption $mail->Port = $smtp["port"]; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS` //Recipients $mail->setFrom($smtp["fromAddress"], $smtp["fromName"]); $mail->addAddress($recipientAddress); //Add a recipient //Content if (isset($link)) { $mailContents["bodyHTML"] = str_replace("%Placeholder%", $link, $mailContents["bodyHTML"]); $mailContents["bodyText"] = str_replace("%Placeholder%", $link, $mailContents["bodyText"]); } $mail->CharSet = "UTF-8"; $mail->isHTML(true); $mail->Subject = $mailContents["subject"]; $mail->Body = $mailContents["bodyHTML"]; $mail->AltBody = $mailContents["bodyText"]; $mail->send(); return TRUE; } catch (Exception $e) { error_log("Message error: {$e}"); return FALSE; } } // redirects to specified URL via GET request and conveys an optional message function GracefulExit($location, $message = NULL) { global $general; header($general['statusCode']); if (isset($message)) { $location .= "?" . http_build_query(['msg' => $message]); error_log($location); } header("Location: {$location}"); } ?>