بعد انقطاع طويل ها هي عودة جديدة لمواصلة المشوار، قد يكون الوقت محاكي لـ ” تجري الرياح بما لا تشتهي السفن ” لكن طالما هناك متسع فإن المسيرة مستمرة في طرح الدروس هنا بإذن الله.
هذا الدرس هو للمبدئين إذ من خلاله سيتم شرح كيفية إرسال بريد، ولمن هم في المستوى المتوسط إذ سيتم طريقة تخصيص ترويسة الصفحة. ارسال البريد من خلال الموقع قد يكون للاتصال بإدارة الموقع، طلب تفعيل عضوية، أو استرجاع كلمة مرور وغيرها من الأمور؛ بالتالي مهمة الارسال من الأساسيات المهمة في تطبيقات الويب.
ماذا تحتاج لإرسال بريد؟
- خادم مجهز بخاصية البريد الالكتروني
إن كنت تستخدم خادم محلي في جهازك، فتأكد من تنصيب ملحق ارسال البريد؛ هنا شرح لأحد الملحقات المؤدية للغرض، إن كنت تستخدم خادم فعلي على الشبكة فلا تقلق، في الغالب تكون الخوادم مهيئة للاستخدام 🙂 - دالة الارسال – mail
- لوحة مفاتيح وأصابع مرنة 🙂
شرح دالة الإرسال:
الشكل العام للدالة:
mail($to, $subject, $message, $additional_headers);
$to = البريد المُرسَل إليه
$subject = عنوان الرسالة
$message = نص الرسالة
$additional_headers = معلومات إضافية في ترويسة الرسالة مثل الترميز (اللغة) وتفاصيل المُرسِل
تطبيق عملي مع إضافة بيانات المُرسِل في ترويسة الرسالة:
<?php $to = 'email@domain.com'; $subject = 'Test email'; $message = "Hi \n "; $message .= "new line \n "; $message .= "again, new line \n "; $sender = "From: Test Sender <no-reply@domain.com>\r\n"; mail($to, $subject, $message, $sender); ?>
(في المثال هناك بريد وهمي “email@domain.com” تأكد من استبدال قيم المتغيرات بقيم مناسبة)
| فاصل إعلاني: هنا درس حول المتغيرات والمصفوفات، وفي المثال إعلاه هناك إضافة بسيطة لم تُذكر في الدرس السابق إلا وهي “.=” في المتغير $message، والمقصد منها هو اضافة الجديد في محتوى المتغير القديم، في المثال السابق بدأنا المتغير ذاته بالترحيب، وبعد اضافة سطر جديد “\n” تمت كتابة عبارة “سطر جديد” وتكررت الخطوة بعدها، كل ذلك في ذات المتغير |
تلقيت رسالة جديدة!
أهناك أي صعوبة في دالة الإرسال؟ لا – على الأقل إلى هذه الخطوة، لكن ماذا عن اللغة العربية؟
بتعريب محتوى ذات المثال السابق:
<?php $to = 'email@domain.com'; $subject = 'تجربة الارسال'; $message = "مرحبًا \n "; $message .= "سطر جديد \n "; $message .= "مرة أخرى، سطر جديد \n "; $sender = "From: مرسل تجريبي <no-reply@domain.com>\r\n"; mail($to, $subject, $message, $sender); ?>
والنتيجة:
إذًا هناك خلل!
والحل هو بإضافة ترميز الرسالة (لغة الرسالة) إلى ترويستها ولنحل أو نتجنب العديد من مشاكل اللغة مستقبلًا يفضل استخدام الترميز الموحد – UTF-8 والطريقة في ذات الشفرة مع إضافات بسيطة:
<?php $to = 'email@domain.com'; $subject = 'تجربة الارسال'; $message = "مرحبًا \n "; $message .= "سطر جديد \n "; $message .= "مرة أخرى، سطر جديد \n "; $sender = "From: مرسل تجريبي <no-reply@domain.com>\r\n"; $sender .= "Content-type:text/plain; charset=utf-8\r\n"; mail($to, $subject, $message, $sender); ?>
إذ أن الاضافة هي مجرد سطر وحيد من خلاله حددنا نوع الرسالة (نص) والترميز (الترميز الموحد):
$sender .= "Content-type:text/plain; charset=utf-8\r\n";
والنتيجة:
وضع بعض السكر في الرسالة بتحويلها إلى رسالة HTML وإضافة بعض التنسيق، المثال قبل الشفرة:
أي أنه يمكنك تنسيق الرسالة باستخدام شفرات HTML وكل ذلك هو بتغير نوع الرسالة. توضيحًا، السطر:
$sender .= "Content-type:text/plain; charset=utf-8\r\n";
يتحول إلى:
$sender .= "Content-type:text/html; charset=utf-8\r\n";
هل لاحظت الفرق؟ 🙂
الشفرة كاملة:
<?php $to = 'email@domain.com'; $subject = 'تجربة الارسال'; $message = "مرحبًا <br /> "; $message .= "سطر جديد <br />"; $message .= '<font color="#00FF00">أخضر</font> <font color="#FF0000">أحمر</font> <br />'; $message .= "مرة أخرى، سطر جديد <br /> "; $sender = "From: مرسل تجريبي <no-reply@domain.com>\r\n"; $sender .= "Content-type:text/html; charset=utf-8\r\n"; mail($to, $subject, $message, $sender); ?>
أيضًا من خلال معلومات الترويسة يمكن إضافة بريد للرد، ومثالًا:
والشفرة للمثال أعلاه:
<?php $to = 'email@domain.com'; $subject = 'تجربة الارسال'; $message = "مرحبًا \n "; $message .= "سطر جديد \n "; $message .= "مرة أخرى، سطر جديد \n "; $sender = "From: مرسل تجريبي <no-reply@domain.com>\r\n"; $sender .= "Content-type:text/plain; charset=utf-8\r\n"; $sender .= "Reply-To: الدعم الفني <support@domain.com>"; mail($to, $subject, $message, $sender); ?>
لازال هناك الكثير لاكتشافه حول ترويسة البريد الالكتروني، كإرفاق ملف في الرسالة، لربما سيتم متابعة هذا في درس لاحق بإذن الله 🙂