معمولا در توسعهی اپلیکیشنها ارسال ایمیل به کاربران نیاز است. مثلا فرض کنید در فرم ثبت نام قصد دارید پس از موفق بودن عملیات عضو شدن کاربر جدید، یک ایمیل خوشآمد گویی برای وی ارسال کنید. در ادامهی این آموزش با زومیت همراه باشید.
ارسال ایمیل در پیاچپی بسیار آسان است ولی این امر در فریمورک Codeigniter آسانتر نیز میشود. فریمورک یاد شده امکانات زیر را برای ارسال ایمیل در اختیار شما قرار میدهد.
- پشتیبانی از چندین پروتکل - Mail, Sendmail و SMTP
- رمزنگاری TLS و SSL برای SMTP
- امکان ارسال ایمیل همزمان به چند نفر
- پشتیبانی از CC و BCC
- امکان ارسال ایمیل به صورت متنی یا HTML
- امکان ضمیمه کردن فایل با ایمیل
- شکستن متن در ایمیل
- اولیتبندی ایمیلها
- حالت دستهای BBC که امکان ارسال رایانامه به یک لیست بزرگ از آدرس ایمیلهای مختلف را فراهم میکند.
- ابزارهای رفع اشکال ایمیل
کلاس ایمیل در فریمورک Codeigniter شامل توابع زیر است که هر کدام کار خاصی را در ارسال ایمیلها انجام میدهند.
شماره | الگوی کلی | پارامترها | خروجی | نوع خروجی |
---|---|---|---|---|
1 | from($from[, $name = ''[,$return_path = NULL]]) | $from (string) − “From” آدرس ایمیل $name (string) − “From” نام نمایشی $return_path (string) − ایمیل اختیاری برای مواقعی که ایمیل ارسال شده به مقصد نمیرسد | CI_Email instance (method chaining) | CI_Email |
2 | reply_to($replyto[, $name = '']) | $replyto (string) − آدرس ایمیل برای ارسال پاسخ $name (string) − نام نمایشی برای ایمیل پاسخ دهنده | CI_Email instance (method chaining) | CI_Email |
2 | to($to) | $to (mixed) − لیست ایمیل یا ایمیلهای مقصد که باید آنها را با کاما جدا کرد یا به صورت یک آرایه به این تابع ارسال کرد | CI_Email instance (method chaining) | CI_Email |
3 | cc($cc) | $cc (mixed) − لیست ایمیل یا ایمیلهای که قصد داریم رایانامه را برای آنها نیز ارسال کنیم که باید آنها را با کاما جدا کرد یا به صورت یک آرایه به این تابع ارسال کرد | CI_Email instance (method chaining) | CI_Email |
4 | bcc($bcc[, $limit = '']) | $bcc (mixed) − لیست ایمیلهایی که باید با کاما از یکدیگر جدا شده یا به صورت آرایه به این تابع ارسال شوند $limit (int) − حداکثر تعداد ایمیلهایی که در هر بار ارسال گروهی باید فرستاد شود | CI_Email instance (method chaining) | CI_Email |
5 | subject($subject) | $subject (string) − موضوع ایمیل | CI_Email instance (method chaining) | CI_Email |
6 | message($body) | $body (string) − متن اصلی ایمیل | CI_Email instance (method chaining) | CI_Email |
7 | set_alt_message($str) | $str (string) − مشابه متن اصلی ایمیل | CI_Email instance (method chaining) | CI_Email |
8 | set_header($header, $value) | $header (string) − نام هدر $value (string) − مقدار هدر | CI_Email instance (method chaining) | CI_Email |
9 | clear([$clear_attachments = FALSE]) | $clear_attachments(bool) – تعیین اینکه ضمیمه ها پاک شوند یا خیر | CI_Email instance (method chaining) | CI_Email |
10 | send([$auto_clear = TRUE]) | $auto_clear (bool) − تعیین اینکه داده های مرتبط با ایمیل به صورت خودکار پاک شوند یا خیر | CI_Email instance (method chaining) | CI_Email |
11 | attach($filename[, $disposition = ''[, $newname = NULL[, $mime = '']]]) | $filename (string) − نام فایل $disposition (string) − وضع فایل ضمیمه در ایمیل. البته بسیاری از ابزارهای مدیریت ایمیل خود از وضع مخصوصی استفاده میکنند $newname (string) − نام سفارشی برای فایل برای استفاده در ایمیل $mime (string) − MIME نوع (برای دادههایی که میانگین دارند مفید است) | CI_Email instance (method chaining) | CI_Email |
12 | attachment_cid($filename) | $filename (string) − نام فایل ضمیمه موجود | Attachment Content-ID or FALSE if not found | string |
ارسال ایمیل
برای ارسال ایمیل در فریمورک codeigniter ابتدا باید کتابخانهی مربوطه را بارگذاری کنیم. بدین منظور باید از کدی مثل کد زیر بهره ببریم.
$this->load->library('email');
پس از لود کردن کتابخانهی ایمیل، به راحتی میتوان از توابع فوق استفاده کرد و مقادیر مورد نیاز را در آنها قرار داد تا ایمیل مورد نظر ارسال شود. با استفاده از تابع ()from میتوان تعیین کرد که فرستندهی ایمیل چه کسی است و با تابع ()to نیز مخاطب یا مخاطبانی که قصد ارسال ایمیل به آنها را داریم را تعیین میکنیم. علاوه بر این با استفاده از دو تابع ()subject و ()message به ترتیب موضوع و متن اصلی ایمیل را تعیین میکنیم. به مثال زیر توجه کنید.
$this->email->from('این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید ', 'Your Name'); $this->email->to('این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید '); $this->email->subject('Email Test'); $this->email->message('Testing the email class.');
پس از تنظیم مقادیر مورد نیاز برای ارسال ایمیل، با استفاده از تابع ()send اقدام به ارسال ایمیل میکنیم.
$this->email->send();
مثال:
ابتدا نرمافزار سرور مجازی زمپ را مثل همیشه اجرا کرده و دو سرور آپاچی و MySql را در حالت فعال قرار دهید.
یک پروژه جدید Codeigniter همانند پروژههایی که در جلسات قبل ایجاد میکردید ایجاد کنید. بدین منظور ما یک پوشه در htdocs نرمافزار زمپ ساخته و نام آن را code-emial تعیین کردهایم. سپس همانند آنچه در آموزشهای جلسات اولیه توضیح دادیم، فریمورک را در این پوشه پیکربندی و آمادهی استفاده میکنیم.
در مسیر application/controller یک فایل کنترلر جدید به نام Email_controller.php بسازید و کد زیر را در آن قرار دهید:
<?php class Email_controller extends CI_Controller { function __construct() { parent::__construct(); $this->load->library('session'); $this->load->helper('form'); } public function index() { $this->load->helper('form'); $this->load->view('email_form'); } public function send_mail() { $from_email = "این آدرس ایمیل توسط spambots حفاظت می شود. برای دیدن شما نیاز به جاوا اسکریپت دارید "; $to_email = $this->input->post('email'); //Load email library $this->load->library('email'); $this->email->from($from_email, 'Your Name'); $this->email->to($to_email); $this->email->subject('Email Test'); $this->email->message('Testing the email class.'); //Send mail if($this->email->send()) $this->session->set_flashdata("email_sent","Email sent successfully."); else $this->session->set_flashdata("email_sent","Error in sending Email."); $this->load->view('email_form'); } } ?>
در کد بالا در متد ()sendـmail ابتدا مقادیری چون آدرس فرستنده، گیرنده، موضوع و متن ایمیل را تعیین کردهایم. سپس با استفاده از دستور شرطی if و تابع ()send از ارسال شدن یا نشدن ایمیل اطمینان حاصی میکنیم و سپس با استفاده از تابع set_flashdata پیام مورد نظر را در هر یک از شرایط به کاربر نمایش میدهیم.
حال باید فایل ویو یا نمای مربوطه را نیز ایجاد کنیم. بدین منظور در مسیر application/views یک فایل جدید به نام email_form.php ایجاد کرده و کدهای زیر را در آن قرار دهید.
<!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>CodeIgniter Email Example</title> </head> <body> <?php echo $this->session->flashdata('email_sent'); echo form_open('/Email_controller/send_mail'); ?> <input type = "email" name = "email" required /> <input type = "submit" value = "SEND MAIL"> <?php echo form_close(); ?> </body> </html>
در نهایت در مسیر application/config فایل routes.php را باز کرده و سپس خط زیر را به آخر آن اضافه کنید.
$route['email'] = 'Email_Controller';
با مراجعه به لینک اپلیکیشن ساخته شده، میتوانیم ایمیل مورد نظرمان را توسط فریمورک Codeigniter ارسال کنیم. از آنجا که ما این مثال را در پوشهی codei-email ایجاد کردهایم، بنابراین برای اجرای آن باید به آدرس زیر در مرورگر وب خود مراجعه کنیم.
http://127.0.0.1/index.php/email
همانطور که مشاهده کردید ارسال ایمیل در فریمورک مورد بحث بسیار آسان بوده و بنا به نیاز خود میتوانید هر نوع ایمیلی را با ِآن ارسال کنید. با توجه به توابعی که در این مطلب آنها را به شما توضیح دادیم، سعی کنید برای خود پروژهای تعریف کنید که در آن یک ایمیل اچتیامال با محتوای دلخواه و نیز فایل ضمیمه را برای خود و چند نفر دیگر ارسال کنید.
اگر سوال یا پیشنهادی در مورد مباحث ارايه شده در این جلسه دارید، لطفا از طریق بخش دیدگاهها آن را با زومیت و سایر کاربران به اشتراک بگذارید.