创建电子邮件模板(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
