قابلیت ارسال ایمیل یکی از پراستفاده ترین ها در اپلیکیشن های تحت وب است . در بیشتر موارد ، نیاز است که ایمیل از طریق خود اسکریپت ارسال شود ، مثل ثبت نام کاربر ، لاگین ، فراموشی رمز عبور ، خرید محصول ، فرم تماس با ما و غیره… . عموما ، تابع mail() برای ارسال ایمیل از خود اسکریپت استفاده می شود. جایگزین آن ، برای افرایش درصد موفقیت ارسال ایمیل ، از SMTP برای ارسال ایمیل استفاده می شود. زمانی که از وبسایت ما یک ایمیل ارسال می شود ، یک قالب ایمیل برای ساخت محتویات جذاب و کاربر پسندانه استفاده می شود.
ساخت قالب ایمیل داینامیک به ما اجازه میدهد برای انواع ایمیل قالب متفاوتی را استفاده کنیم. قالب ایمیل داینامیک ، زمانی که بخواهید برای انواع ایمیل برای هدف های مختلف ، قالب های متفاونی استفاده کنید. در این آموزش ، به شما نشان خواهیم داد چگونه قالب های ایمیل را مدیریت و برای ارسال ایمیل های مختلف در PHP از آن ها استفاده کنید.
ساخت جدول در دیتابیس
برای ذخیره داده های قالب ایمیل ، نیاز دارین مه یک جدول (table) ایجاد کنیم . کد SQL زیر یک جدول email_templates در دیتابیس ایجاد می کند .
1 2 3 4 5 6 7 8 9 10 |
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; |
تنظیمات اتصال به دیتابیس (dbConfig.php)
فایل dbConfig.php برای اتصال و انتخاب دیتابیس موردنظر استفاده شده است.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php //DB details $dbHost = 'localhost'; $dbUsername = 'root'; $dbPassword = '*****'; $dbName = 'netparadis'; //Create connection and select DB $db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName); if ($db->connect_error) { die("Unable to connect database: " . $db->connect_error); } |
ساخت قالب ایمیل داینامیک (add-template.php)
قبل از استفاده از قالب داینامیک برای ایمیل ، محتوای قالب نیاز است که ساخته شود. در این فایل ، داده های قالب ایمیل در چند فیلد نمایش داده می شود
- Type : نوع قالب ایمیل (فرم تماس باما ، ثبت نام [contact_us,registration,…])
- Title : عنوان ایمیل
- Content : محتوای ایمیل . TinyMCE برای قرار دادن محتوای HTML در ایمیل استفاده شده است.
- متغیرهای در دسترس : متغیرهای ثابت که می توانند در قالب ایمیل استفاده می شود. این مقادیر میتواند در زمان ارسال هر ایمیل تغییر کنند.
یکبار که فرم با داده های مربوطه ارسال شد فایل templateSubmit.php بقیه مراحل را مدیریت خواهد کرد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<?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 CodexWorld</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> |
قرار دادن محتویات قالب (templateSubmit.php)
در این فایل ، اطلاعات قالب ایمیل ارسال شده در دیتابیس ذخیره می شوند. بعد از ذخیره ، وضعیت (status) در سئشن ذخیره و به صفحه ساخت قالب ریدایرکت می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?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"); ?> |
قالب ایمیل داینامیک (sendEmail.php)
حالا ما ایمیل را با استفاده از قالبی که در دیتابیس ذخیره شده است ارسال می کنیم . مراحل زیر برای ارسال ایمیل HTML با قالب داینامیک توسط PHP و MYSQL انجام می شود.
- اطلاعات کاربر با $_POST از فرم تماس با ما یا هر عمل دیگری (ثبت نام ، فراموشی رمزعبور ، لینک فعال سازی و…) دریافت می شود.
- محتوای قالب بر اساس نوع ایمیل از جدول (email_templates) خوانده می شود.
- متعیر های ایمیل جایگرین متغیر های داینامیک تعریف شده جایگزین می شود.
- ایمیل HTML با محتویات قالب داینامیک به کاربر ارسال می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?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.codexworld.com', 'SITE_NAME' => 'CodexWorld', '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: CodexWorld<sender@example.com>' . "\r\n"; // Send email if(mail($to,$subject,$emailContent,$headers)): $successMsg = 'Email has sent successfully.'; else: $errorMsg = 'Email sending fail.'; endif; |
جمع بندی
در این آموزش یاد گرفتید که چطور یک سیستم قالب ایمیل داینامیک را برای وب اپلیکیشن خود پیاده کنید . برای مثال ما فقط چند متغییر ابتدایی را برای قالب خود تعریف کردیم که می توانید بنابر نیاز خود ، متغییر های دیگری را اضافه کنید .
سلام و ارادت
دستت شما درد نکنه زحمت کشیدید
فایل ها رو دقیقا همین که هست روی هاست ریختم و برای بازیابی رمز عبور میخوام ازش استفاده کنم
اما ایمیل ها مثل قبل بصورت دیفالت ارسال میشه ممکنه مشکل رو راهنمایی بفرمایید
سپاس از جنابعالی
سلام. خواهش می کنم.
ابتدا باید با ورود به صفحه add-template.php یک قالب را در دیتابیس اضافه کنید تا بعدا بتوانید از آن برای ارسال ایمیل استفاده کنید.
موفق باشید.
سلام. دوست عزیز لطفاٌ سورس این پروژه رو پیوست میکنی؟
خدا خیرت بده.
سلام . سورس ربات رو مطابق آموزش بسازید و استفاده کنید. موفق باشید.