创建电子邮件模板(add-template.php)

在我们使用动态模板以进行电子邮件之前,需要创建模板内容。
最初,在此文件中,电子邮件模板数据提交表单显示了一些基本字段。

  • 类型:电子邮件模板类型。 (CONTACT_US,注册等)
  • 标题:电子邮件模板标题。
  • 内容:电子邮件内容。为插入HTML电子邮件内容提供TinyMCE编辑器。
  • 可用变量:可以在电子邮件模板内容中使用的静态变量。它将在发送电子邮件时替换为动态值。

将表单提交后,将模板数据发送到“templateBmit.php”文件以进行进一步处理。

<?php
//start session
session_start();
if(!empty($_SESSION['status'])){
    //get status from session
    $status = $_SESSION['status'];
    $msg = $_SESSION['msg'];

    //remove status from session
    unset($_SESSION['status']);
    unset($_SESSION['msg']);
}
?>
<!DOCTYPE html>
<html>
<head>
    <title>Dynamic Email Template Management System using PHP & MySQL by onitroad</title>

    <!-- Add TinyMCE editor to textarea -->
    <script src="https://cloud.tinymce.com/stable/tinymce.min.js"></script>
    <script>tinymce.init({ selector:'textarea' });</script>
</head>
<body>
    <?php
    if(!empty($status) && $status == 'succ'){
        echo '<p style="color: green;">'.$msg.'</p>';
    }elseif(!empty($status) && $status == 'err'){
        echo '<p style="color: red;">'.$msg.'</p>';
    }
    ?>
    <form method="post" action="templateSubmit.php">
        <p>
            Type:
            <select name="type">
                <option value="contact_us">Contact Us</option>
                <option value="registration">Registration</option>
            </select>
        </p>
        <p>
            Title: <input type="text" name="title" />
        </p>
        <p>
            Content: <textarea name="content"></textarea>
        </p>
        <p>Available Variables: [SITE_URL] [SITE_NAME] [USER_NAME] [USER_EMAIL]</p>
        <p>
            <input type="submit" name="submit" value="Add Template">
        </p>
    </form>
</body>
</html>
在PHP中创建动态电子邮件模板

当我们从我们的发送电子邮件时,电子邮件模板用于使电子邮件内容具有吸引力和用户友好。

动态电子邮件模板可以轻松管理不同类型的电子邮件模板。
当我们希望以不同的模板发送多个目的时,动态电子邮件模板最有用。
在本教程中,我们将向我们展示如何管理电子邮件模板并创建动态模板,以从PHP中的脚本发送多个电子邮件。

数据库表创作

要存储电子邮件模板数据,需要在MySQL数据库中创建表。
以下SQL在数据库中创建一个“email_templates”表。

CREATE TABLE `email_templates` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `type` enum('contact_us','registration') COLLATE utf8_unicode_ci NOT NULL,
 `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
 `content` text COLLATE utf8_unicode_ci NOT NULL,
 `created` datetime NOT NULL,
 `modified` datetime NOT NULL,
 `status` enum('1','0') COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

插入模板内容(templatebmit.php)

在此文件中,使用PHP和MySQL将提交的电子邮件模板数据插入数据库中。
插入后,状态存储在会话中并重定向到模板创建页面。

<?php
//start session
session_start();
if(isset($_POST['submit'])){
    if(!empty($_POST['type']) && !empty($_POST['title']) && !empty($_POST['content'])){
        //Include database configuration file
        require_once 'dbConfig.php';

        //Insert email template data
        $type 	 = $db->real_escape_string($_POST['type']);
        $title   = $db->real_escape_string($_POST['title']);
        $content = $db->real_escape_string($_POST['content']);
        $dataTime= date("Y-m-d H:i:s");

        $insert = $db->query("INSERT into email_templates (type, title, content, created, modified, status) VALUES ('$type', '$title', '$content', '$dataTime', '$dataTime', '1')");
        if($insert){
            $_SESSION['status'] = 'succ';
            $_SESSION['msg'] = 'Email template has been created successfully.';
        }else{
            $_SESSION['status'] = 'err';
            $_SESSION['msg'] = 'Some problem occurred, please try again.';
        }
    }else{
        $_SESSION['status'] = 'err';
        $_SESSION['msg'] = 'All fields are mandatory, please fill all the fields.';
    }
}
header("Location: add-template.php");
?>

数据库配置(dbconfig.php)

“dbconfig.php”文件用于连接和选择MySQL数据库。

<?php
//DB details
$dbHost = 'localhost';
$dbUsername = 'root';
$dbPassword = '*';
$dbName = 'onitroad';
//Create connection and select DB
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);
if ($db->connect_error) {
    die("Unable to connect database: " . $db->connect_error);
}

动态电子邮件模板(sendemail.php)

现在,我们将使用存储在数据库中的动态模板发送电子邮件。
以下过程用于使用PHP和MySQL与动态模板发送HTML电子邮件。

  • 将从$_post(联系人表格)或者数据库(注册,激活,忘记密码等)中检索用户详细信息。
  • 基于电子邮件类型,从数据库(Email_templates)中获取模板内容。
  • 模板变量由动态值替换。
  • 具有动态模板内容HTML电子邮件将发送给用户。
<?php
//Include database configuration file
require_once 'dbConfig.php';
/*
 * Contact email with template
 */
//get user details
$userName  = 'John Doe';
$userEmail = 'john@example.com';
//get email template data from database
$query = $db->query("SELECT * FROM email_templates WHERE type = 'contact_us'");
$tempData = $query->fetch_assoc();
//replace template var with value
$token = array(
    'SITE_URL'  => 'http://www.onitroad.com',
    'SITE_NAME' => 'onitroad',
    'USER_NAME' => $userName,
    'USER_EMAIL'=> $userEmail
);
$pattern = '[%s]';
foreach($token as $key=>$val){
    $varMap[sprintf($pattern,$key)] = $val;
}
$emailContent = strtr($tempData['content'],$varMap);
//send email to user
$to = $userEmail;
$subject = "Contact us email with template";
//Set content-type header for sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
//Additional headers
$headers .= 'From: onitroad<sender@example.com>' . "\r\n";
//Send email
if(mail($to,$subject,$emailContent,$headers)):
    $successMsg = 'Email has sent successfully.';
else:
    $errorMsg = 'Email sending fail.';
endif;
日期:2020-06-02 22:15:28 来源:oir作者:oir