كيفية إرسال بريد إلكتروني باستخدام Codeأنبوب
⚡ ملخص ذكي
Codeتعتمد ميزة إرسال البريد الإلكتروني في Igniter على مكتبة البريد الإلكتروني المدمجة في إطار العمل لإرسال الرسائل عبر بروتوكول SMTP أو خادم البريد المحلي. ينشئ هذا المثال ملف تهيئة البريد الإلكتروني، وعرض نموذج الاتصال، ووحدة تحكم تقرأ مدخلات النموذج وترسل الرسالة.

يُعدّ البريد الإلكتروني بالغ الأهمية في تطبيقات الويب. فعندما يُسجّل المستخدم، قد نرغب في إرسال بريد إلكتروني إليه للتحقق من عنوان بريده الإلكتروني والسماح له بتأكيد الاشتراك. كما نستخدم البريد الإلكتروني لإعادة تعيين كلمات المرور المفقودة وإرسال الفواتير والإيصالات إلى العملاء. Codeيُسهّل Igniter علينا إرسال رسائل البريد الإلكتروني من تطبيقنا باستخدام مجموعة متنوعة من الخيارات.
Codeيحتوي Igniter على مكتبة بريد إلكتروني مدمجة يمكننا العمل معها عند إرسال رسائل البريد الإلكتروني.
Codeإعدادات البريد الإلكتروني في Igniter
نحتاج إلى مكان مركزي يمكننا من خلاله إدارة إعدادات البريد الإلكتروني. Codeلا يأتي برنامج Igniter مزودًا بملف تكوين للبريد الإلكتروني، لذلك سيتعين علينا إنشاء واحد بأنفسنا.
قم بإنشاء ملف email.php في الدليل application/config
أضف الكود التالي إلى email.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); $config = array( 'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp' 'smtp_host' => 'smtp.example.com', 'smtp_port' => 465, 'smtp_user' => 'no-reply@example.com', 'smtp_pass' => '12345!', 'smtp_crypto' => 'ssl', //can be 'ssl' or 'tls' for example 'mailtype' => 'text', //plaintext 'text' mails or 'html' 'smtp_timeout' => '4', //in seconds 'charset' => 'iso-8859-1', 'wordwrap' => TRUE );
هنا،
- يُحدد الخيار 'protocol' => 'smtp' البروتوكول الذي ترغب في استخدامه عند إرسال البريد الإلكتروني. ويمكن أن يكون هذا البروتوكول هو: Gmail إعدادات SMTP أو إعدادات SMTP من مضيفك
- يُحدد الخيار 'smtp_host' => 'smtp.example.com' خادم SMTP. على سبيل المثال، إذا كنت ترغب في استخدام Gmail عندها سيكون لديك شيء مثل smtp.gmail.com
- 'smtp_port' => 465، وهو منفذ مفتوح على مضيف SMTP المحدد الذي تم تكوينه لبريد SMTP
- 'smtp_user' => 'no-reply@example.com'، عنوان البريد الإلكتروني الذي سيتم استخدامه كمرسل عند إرسال رسائل البريد الإلكتروني. يجب أن يكون عنوان بريد إلكتروني صالحًا موجودًا على الخادم
- 'smtp_pass' => '12345!'، كلمة مرور البريد الإلكتروني لمستخدم SMTP المحدد
- 'smtp_crypto' => 'ssl'، يحدد طريقة التشفير المراد استخدامها، أي ssl، tls، إلخ.
- يُحدد الخيار 'mailtype' => 'text' نوع البريد الإلكتروني المراد استخدامه. ويمكن أن يكون نصًا عاديًا أو HTML حسب احتياجاتك.
- 'smtp_timeout' => '4'، يحدد الوقت بالثواني الذي يجب أن ينقضي عند محاولة الاتصال بالمضيف قبل طرح استثناء المهلة.
- 'charset' => 'iso-8859-1'، يحدد مجموعة الأحرف التي سيتم استخدامها عند إرسال رسائل البريد الإلكتروني.
- 'wordwrap' => TRUE، إذا تم ضبطه على TRUE، فسيتم تفعيل خاصية التفاف الكلمات. أما إذا تم ضبطه على FALSE، فلن يتم تفعيلها.
ملاحظات:لكي يعمل إرسال رسائل البريد الإلكتروني، يجب عليك توفير معلمات تكوين صالحة. لن تتمكن المعلمات الوهمية من إرسال رسائل البريد الإلكتروني.
Codeعرض البريد الإلكتروني في Igniter
في هذا القسم، سنقوم بإنشاء العرض الذي سيرسل البريد الإلكتروني إلى المستلم.
إنشاء دليل بريد إلكتروني جديد في التطبيق/العروض
أنشئ ملفًا جديدًا باسم contact.php في المسار application/views/email
أضف الكود التالي إلى application/views/email/contact.php
<!DOCTYPE html> <html> <head> <title>CodeIgniter Send Email</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div> <h3>Use the form below to send email</h3> <form method="post" action="<?=base_url(0)?>" enctype="multipart/form-data"> <input type="email" id="to" name="to" placeholder="Receiver Email"> <br><br> <input type="text" id="subject" name="subject" placeholder="Subject"> <br><br> <textarea rows="6" id="message" name="message" placeholder="Type your message here"></textarea> <br><br> <input type="submit" value="Send Email" /> </form> </div> </body> </html>
هنا،
- لدينا نموذج HTML أساسي يقبل البريد الإلكتروني والموضوع والرسالة، ثم يمرر المعلمات إلى مسار البريد الإلكتروني.
Codeوحدة تحكم البريد الإلكتروني Igniter
لنقم الآن بإنشاء وحدة التحكم التي ستتولى إرسال البريد الإلكتروني.
قم بإنشاء ملف جديد EmailController.php في application/controllers/EmailController.php
أضف الكود التالي إلى EmailController.php
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class EmailController extends CI_Controller { public function __construct() { parent:: __construct(); $this->load->helper('url'); } public function index() { $this->load->view('email/contact'); } function send() { $this->load->config('email'); $this->load->library('email'); $from = $this->config->item('smtp_user'); $to = $this->input->post('to'); $subject = $this->input->post('subject'); $message = $this->input->post('message'); $this->email->set_newline("\r\n"); $this->email->from($from); $this->email->to($to); $this->email->subject($subject); $this->email->message($message); if ($this->email->send()) { echo 'Your Email has successfully been sent.'; } else { show_error($this->email->print_debugger()); } } }
هنا،
- يُعرّف الصنف EmailController الذي يمتد من CI_Controller {…} وحدة تحكم البريد الإلكتروني الخاصة بنا والتي تمتد بدورها من الصنف الأب. Codeوحدة تحكم الإشعال.
- تحدد الوظيفة العامة __construct() {...} المُنشئ الفرعي الذي يستدعي طريقة المُنشئ الأصل.
- يحدد فهرس الوظيفة العامة () {...} طريقة الفهرس التي تعرض نموذج الاتصال
- تحدد الدالة send() {…} الطريقة التي ترسل بها البريد الإلكتروني
- $this->load->config('email'); يقوم بتحميل إعدادات تكوين البريد الإلكتروني
- $this->load->library('email'); يقوم بتحميل مكتبة البريد الإلكتروني
- $from = $this->config->item('smtp_user'); يحصل على معرف المرسل من ملف تكوين البريد الإلكتروني الذي حددناه.
- $to = $this->input->post('to'); يحصل على القيمة من النموذج المقدم
- $subject = $this->input->post('subject'); يحدد موضوع البريد الإلكتروني من النموذج
- $message = $this->input->post('message'); يحدد رسالة البريد الإلكتروني من النموذج
- $this->email->set_newline(“\r\n”); يحدد أحرف السطر الجديدة للرسائل الإلكترونية
- $this->email->from($from); يحدد عنوان البريد الإلكتروني للمرسل
- $this->email->to($to); يحدد عنوان البريد الإلكتروني للمستلم
- $this->email->subject($subject); يحدد موضوع البريد الإلكتروني
- $this->email->message($message); يحدد رسالة البريد الإلكتروني
- إذا حاولت الدالة `$this->email->send()` إرسال البريد الإلكتروني، فسيتم عرض رسالة "تم إرسال بريدك الإلكتروني بنجاح". أما إذا لم يتم إرساله، فسيتم عرض معلومات تصحيح الأخطاء حول سبب المشكلة.
لنحدد الآن مسارات البريد الإلكتروني.
طرق البريد الإلكتروني
أضف المسارات التالية إلى application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
يمكننا الآن تحميل نموذج الاتصال في متصفح الويب.
لنبدأ تشغيل خادم PHP المدمج.
افتح الطرفية أو سطر الأوامر وانتقل إلى جذر تطبيقك. في حالتي، يقع الجذر في محرك الأقراص C:\Sites\ci-app
cd C:\Sites\ci-app
ابدأ تشغيل الخادم باستخدام الأمر التالي
php -S localhost:3000
قم بتحميل ما يلي URL في متصفح الويب الخاص بك: http://localhost:3000/send-email
يجب أن تكون قادرًا على رؤية النموذج التالي
أدخل عنوان البريد الإلكتروني للمستلم، والموضوع، ونص الرسالة، ثم انقر على "إرسال البريد الإلكتروني". إذا كانت إعدادات بريدك الإلكتروني صحيحة، فستظهر لك رسالة تأكيد الإرسال.
كيفية إرسال رسائل البريد الإلكتروني والمرفقات بتنسيق HTML Codeأنبوب
تتيح مكتبة البريد الإلكتروني نفسها إرسال رسائل وملفات بتنسيقات غنية. إجراء تغييرين بسيطين يحوّلان مثال النص العادي أعلاه إلى بريد إلكتروني بتنسيق HTML مع مرفق.
$this->email->set_mailtype('html'); $this->email->message('<h3>Welcome</h3><p>Thanks for joining us.</p>'); $this->email->attach('/path/to/report.pdf');
- set_mailtype('html'): يُخبر المكتبة بأن النص يحتوي على HTML، لذلك يتم عرض علامات مثل العناوين والروابط في صندوق الوارد الخاص بالمستلم.
- attach(): يضيف ملفًا من مسار الخادم إلى الرسالة؛ استدعِ هذه الدالة مرة واحدة لكل ملف قبل إرساله.
تذكر أن رسائل البريد الإلكتروني بتنسيق HTML يجب أن تتضمن بديلاً نصياً عادياً، وقد يتم رفض المرفقات الكبيرة بواسطة خوادم البريد الصارمة.

