أكواد PHP – كلاس SwiftMailer للبريد الإلكتروني

السلام عليكم
كما وعدت في التدوينة السابقة سوف أقوم بنشر أكواد PHP تباعاً في مختلف المجالات. وأبدأ هذا بشرح كلاس SwiftMailer المشهور.
بدأ SwiftMailer ككلاس PHP عادي ولكنه مع الزمن تطور وأصبح مكتبة متكاملة للتعامل من إرسال واستقبال البريد بكافة البروتوكولات المعروفة. بحسب الموقع فإن SwiftMailer ليس تطبيق متكامل وإنما هو مكتبة أو إطار عمل يتم استعماله لبناء تطبيقات أخرى.

مواصفات الكلاس:

  • إرسال البريد الإلكتروني باستعمال SMTP، sendmail، postfix أو أي بروتوكول آخر لإرسال البريد الإلكتروني.
  • دعم السيرفرات التي تتطلب اسم المستخدم وكلمة السر والتشفير
  • حماية ضد الاختراقات البريدية
  • استعمال الإضافات لزيادة الوظائف وطريقة عمل الكلاس
  • إمكانية إرسال مرفقات كبيرة واستعمال ذاكرة قليلة بالمقابل

مكونات المكتبة:

  • المكون الرئيسي The Mailer: هذا هو المكون الرئيسي للمكتبة. يجب إستعمال هذا المكون للتمكن من استعمال المكونات الاخرى.
  • النواقل Transports: يقوم هذا المكون بتسهيل استعمال النواقل المعروفة مثل SMTP، sendmail، postfix
  • أقسام الرسالة MIME Entities: هذا المكون يحتوي على أقسام الرسالة كالنص والترويسة والمرفقات وغيرها.
  • الترميز Encoders: هذا المكون يقوم بتحويل الرسالة إلى نص يمكن ارساله من سيرفر إلى آخر بأمان.
  • الإضافات Plugins: هذا المكون يحتوي على إضافات جاهزة أو إضافات تطور للمكتبة لإضافة خصائص اخرى غير موجودة في المكتبة.

مثال:

يمكن استعمال الكلاس عن طريق استدعاء الملف swift_required.php :

require_once '/path/to/swift-mailer/lib/swift_required.php';

ولإنشاء رسالة جديدة استعمل هذا الكود:

<?php
// إنشاء الرسالة
$message = Swift_Message::newInstance()

  // عنوان الرسالة
  ->setSubject('Your subject')

  // عنوان المرسل - يمكن استعمال مصفوفة لوضع أكثر من مرسل
  ->setFrom(array('john@doe.com' => 'John Doe'))

  //عنوان المرسل إليه - يمكن استعمال مصفوفة لوضع اكثر من مستقبل 
  ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))

  // نص الرسالة
  ->setBody('Here is the message itself')

  // نص رسالة بديل
  ->addPart('<q>Here is the message itself</q>', 'text/html')

  // إضافة المرفقات 
  ->attach(Swift_Attachment::fromPath('my-document.pdf'))
  ;
?>

ولإرسال الرسالة يمكن استعمال هذا الكود:

<?php
require_once 'lib/swift_required.php';

// إنشاء ناقل الرسالة - في هذا السطر نستعمل SMTP
$transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
  ->setUsername('your username')
  ->setPassword('your password')
  ;

/*
يمكن أيضاً أن تسعمل ناقلات اخرى مثل sendmail أو Mail:

// Sendmail
$transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');

// Mail
$transport = Swift_MailTransport::newInstance();
*/

// إنشاء الكلاس باستعمال الناقل الذي تم إنشاؤه
$mailer = Swift_Mailer::newInstance($transport);

// إنشاء الرسالة
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('john@doe.com' => 'John Doe'))
  ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
  ->setBody('Here is the message itself')
  ;

// إرسال الرسالة
$result = $mailer->send($message);
?>

اتمنى ان تكون مفيدة لكم وأتمنى سماع تعليقاتكم.

[box type=”download” title=”” align=”center” width=”250px”]لتحميل المكتبة[/box]

اترك تعليقاً

الحقول المطلوبة موسومة بالعلامة *.