ارسال البريد بواسطة الـ Php
يعد من ابسط الأمور التى يمكن ان تنفذها.
لكن مع تقدم العلم وتقنية المعلومات فى الوقت الراهن.
تنوع اشكال الرسائل البريدية وتنوعت طرق ارسالها.
وعليه اصبحت اكثر تعقيدا فى برمجتها وتهيئتها لتتماشى مع الأساليب الحديثة للمراسلة البريدية الموجودة هذه الأيام.
وبإذن الله ابتداء من هذا الدرس ومايليه من عدة دروس سوف نقوم بإنشاء عدة اشكال وامثلة مختلفة عن ارسال البريد بواسطة الـ Php
(لاحظ ان ارسال البريد لن يعمل الا اذا كنت على خادم يتيح لك ارسال البريد, ولن تعمل على جهازك الشخصى الا اذا كان معد بشكل صحيح لإرسال البريد)
اول مثال هو لإرسال بريد يحتوى على نص فقط. بإستخدام الدالة mail()
هذه الدالة تأخذ 5 معطيات وتعود لنا بـ true اذا تم قبول ارسال البريد, او false ان لم يتم الإرسال.
كما اريد ان اضيف ملحوظة, وهو ان الدالة لا تؤكد لنا هل تم استقبال البريد ام لا, لكنها تؤكد لنا هل تم الإرسال من خادمك ام لا.
اول ثلاث معطيات فقط هم المعطيات الإجبارية, وهما كالتالى
عنوان (او عدة عناوين يتم الفصل بين كل منهم بعلامة الفصلة ,)
البريد الذى سيتم ارسال البريد اليه.
عنوان البريد الذى سيتم ارساله.
الرسالة التى سيتم ارسالها.
المعطى الرابع وهو عبارة عن headers اضافية.
والـ headers هى التى يتم بواسطتها, تحديد بريد راسل البريد.
وايضا نوع محتوى البريد, هل هو بريد نصى, ام بريد بهيئة HTML
وهل يحتوى على مرفقات او صور, الخ.
نبدأ مثالنا الأول بسم الله.
كود PHP:
//البريد الذى سيتم الإرسال اليه
$to = 'email@example.com';
//عنوان الرسالة
$subject = 'A test message for mailer script';
//محتوى الرسالة
$message = "this is\njust test\nfor php mail script";
//يمكننا ايضا تحديد من قام بإرسال البريد بالشكل التالى
$headers = "From:
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]\nX-Mailer: php mail tester";
//توكل على الله وابدأ الإرسال
mail($to, $subject, $message, $headers);
لاحظ داخل الرسالة نفسها فصلنا بين الأسطر بالرمز \n
ولاحظ هذا ايضا ماقمنا به فى الـ headers
بالنسبة للكود الذى تم وضعه بالـ headers الأول From وهو لتحديد بريد مرسل البريد.
الثانى هو X-Mailer
وهو لقب بريد المرسل, كاتوضيح لمعنى لقب, الم يسبق لك ورأيت فى احد الرسائل التى يتم ارسالها لك من اى موقع فى خانة الراسل شئ شبيه بالتالى
كود:
From:
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] "the mailer name here"
حيث
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] هو بريد الراسل
و the mailer name here هو نص يحتوى على اسم الشخص او الموقع الذى تم الإرسال بواسطته.
اسم الشخص او الموقع هو الذى تم اضافته بعد X-Mailer.
اتمنى تكون الصورة واضحة.
ماذا اردت ارسال البريد لأكثر من شخص؟
يمكنك فعل ذلك عن طريق اضافة العناوين البريدية التى تريد الإرسال لها فى المعطى to مع الفصل بين كل منهم بـ , او اضافتهم داخل header اضافى bcc او cc
بالشكل التالى
كود PHP:
$email = "email1@example.com,
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط],
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]";
$headers = "From:
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]\nX-Mailer: php mail tester\nbcc: {$email}";
ماذا اذا اردنا جعل البريد يتعامل بأكواد HTML ؟ هذا امر بسيط بإضافة
كود:
\nContent-Type: text/html
للـ headers
لكنه ينتج عنه مشاكل, لأنه مازال هناك برامج لقراءة البريد لا تدعم الـ html
الحل يكون كالتالى (برجاء عدم تجاهل التعليقات لأنها بها افادة جيدة للفهم)
كود PHP:
//البريد الذى سيتم الإرسال اليه
$to = 'email@example.com';
//عنوان الرسالة
$subject = 'email with text and html format';
//محتوى الرسالة النصية
$textMessage = "this is
just test
for php mail script";
//محتوى الرسالة بإستخدام تهيئة
//html
$htmlMessage = "this is<br /><h3>Just test</h3><br />for <b>Php</b> mail script";
//الهيدر الإفتراضى
$headers = "From:
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]\nX-Mailer: php mail tester";
//الفاصل بين مختلف المحتوى
//يجب ان يكون فريد وليس مكرر
//لذلك سوف نعتمد على دالة date()
//ودالة
//md5
//لتكوين 32 حرف غير مكررين
//ودالة time لجعل هذا الفاصل اكثر تعقيدا
//ونقلل من فرصة تكراره
$sep = "Php-Seprator". md5(date("r", time()));
//نبدأ الأن بإضافة المزيد من الهيدر, لنخبر برنامج استلام البريد
//انه هناك اكثر من اصدار من هذه الرسالة
//وان يقوم بقرائته بالصيغة المدعومة به
$headers .= "\nContent-Type: multipart/alternative; boundary=\"{$sep}\"";
// ثم نبدأ الأن بتعريف محتوى الرسالة التى سيتم ارسالها.
//اول شئ نبدأ الرسالة بـ --
//ثم نضيف الفاصل الذى قمنا بتعريفه مسبقا
//ببداية كل جزء من اجزاء الرسالة
//وبعد ذلك نضيف معرف نوع الرسالة
//ثم نضيف سطر فارغ لنبدأ محتوى هذا الجزء
//وفى نهاية الرسالة
//نضيف --
//ثم الفاصل ثم العلامة -- مرة اخرى
$message = <<< MESSAGE
--{$sep}
Content-Type: text/plain
{$textMessage}
--{$sep}
Content-Type: text/html
{$htmlMessage}
--{$sep}--
MESSAGE;
//توكل على الله وابدأ الإرسال
mail($to, $subject, $message, $headers);
اتمنى تكون التعليقات وصلت المطلوب.
وان يكون كل شئ بالكود واضح وبسيط بإذن الله.
اراكم بالدرس المقبل لمزيد من الطرق الأكثر احترافية لإرسال البريد.
مع خالص تمنياتى بالتوفيق بإذن الله.