创建电子邮件模板(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中的脚本发送多个电子邮件。
数据库表创作
要存储电子邮件模板数据,需要在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