إرسال البريد الالكتروني php
تسمح PHP بإرسال بريد الكتروني مباشرة من خلال كود معين .
function PHP mail()
تستخدم الوظيفة mail() لارسال البريد الالكتروني من داخل السكربت .
التركيبة
mail(to,subject,message,headers,parameters)
القيم | الشرح |
---|---|
to | مطلوب . تحدد المستقبل و المستقبلون للبريد |
subject | مطلوب . تحدد موضوع الرسالة . ملاحظة : لايمكن أن تحتوي القيمة على أحرف خاصة |
message | مطلوب . تحدد الرسالة التي سيتم ارسالها . ولكل سطر يجب أن يكون مفصول بسطر جديد (n) . يجب أن يحتوي السطر على أكثر من 70 كلمة . |
headers | خياري . تخصيص ترويسات اضافية مثل cc أو Bcc يجب على الترويسات أن تكون مفصولة (rn) . |
parameters | خياري . تحديد قيمة إضافية لبرنامج sendmail |
إنشاء بريد الكتروني بسيط
أبسط طريقة لإنشاء و ارسال بريد باستخدام PHP هو ارسال بريد نصي .
في المثال التالي سيتم أولاً إنشاء متغيرات وهي ($to, $subject, $message, $from, $headers) ثم نستخدم المتغيرات في mail() function لارسال بريد الكتروني :
<?php $to = "someone@example.com"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = "someonelse@example.com"; $headers = "From:" . $from; mail($to,$subject,$message,$headers); echo "Mail Sent."; ?>
نموذج البريد
باستخدام PHP يمكنك انشاء نموذج لارسال بريد الكتروني في موقعك . سنقوم بارسال رسالة نصية في المثال التالي لبريد الكتروني محدد :
<html> <body> <?php if (isset($_REQUEST['email'])) //if "email" is filled out, send email { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "$subject", $message, "From:" . $email); echo "Thank you for using our mail form"; } else //if "email" is not filled out, display the form { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html>
كيف يعمل كود المثال السابق
- أولاً , فحص فما اذا تم تعبئة حقول مدخلات البريد .
- اذا لم يتم ذلك مثل اذا كانت اول زيارة للصفحة عندها سيتم إظهار نموذج HTML .
- و ان تم تعبئة النموذج سيتم ارسال البريد من النموذج .
- عند الضغط على زر ارسال بعد تعبئة النموذج سيتم اعادة تحميل الصفحة وسيتم فحص فيما اذا تم ذبط مدخلات النموذج ثم سيتم ارسال البريد .
ملاحظة : هذه اسهل طريقة لارسال بريد الكتروني و لكنه غير آمن وفي الدرس القادم سيتم شرح كيفية انشاء بريد الكتروني محمي مع الكثير من السكربتات .
البريد الالكتروني المحمي
هناك نقطة ضعف في انشاء البريد الالكتروني لكن سيتم حل هذه المشكلة في هذا الدرس .
إنشاء البريد الالكتروني المحمي
أولاً لاحظ الكود من خلال الدرس السابق :
<html> <body><?php if (isset($_REQUEST['email'])) //if "email" is filled out, send email { //send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } else //if "email" is not filled out, display the form { echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html>
المشكلة في الكود السابق هو أن أي مستخدم غير مرخص له يمكنه ادخال البيانات الى البريد من خلال نماذج الادخال .
ماذا يحصل لو أن المستخدم أدخل النصوص التالية الى حقول مدخلات النماذج ؟
someone@example.com%0ACc:person2@example.com %0ABcc:person3@example.com,person3@example.com, anotherperson4@example.com,person5@example.com %0ABTo:person6@example.com
يضع الكود mail() النص السابق الى مدخلات النموذج بأنه نص طبيعي و ترويسة النموذج لديها حقول Cc و Bcc و To . عند الضغط على زر الارسال عندها سيتم ارسال البريد الى جميع العناوين التي تم وضعها في النص السابق .
إيقاف ادخال البريد الالكتروني
أفضل طريقة لايقاف ادخال البريد الالكتروني هي تفعيل المدخلات .
يعتبر الكود نفسه في الدرس السابق ولكن قمنا بإضافة مفعّل للمدخلات و التي بدورها تفحص مدخلات حقول البريد :
<html> <body><?php function spamcheck($field) { //filter_var() sanitizes the e-mail //address using FILTER_SANITIZE_EMAIL $field=filter_var($field, FILTER_SANITIZE_EMAIL); //filter_var() validates the e-mail //address using FILTER_VALIDATE_EMAIL if(filter_var($field, FILTER_VALIDATE_EMAIL)) { return TRUE; } else { return FALSE; } } if (isset($_REQUEST['email'])) {//if "email" is filled out, proceed //check if the email address is invalid $mailcheck = spamcheck($_REQUEST['email']); if ($mailcheck==FALSE) { echo "Invalid input"; } else {//send email $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail("someone@example.com", "Subject: $subject", $message, "From: $email" ); echo "Thank you for using our mail form"; } } else {//if "email" is not filled out, display the form echo "<form method='post' action='mailform.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' /> </form>"; } ?> </body> </html>
في المثال السابق قمنا باستخدام فلتر PHP لتفعيل الحقول
- يمسح الفلتر FILTER_SANITIZE_EMAIL جميع أحرف البريد الغير شرعية من النصوص .
- يغعّل الفلتر FILTER_VALIDATE_EMAIL القيمة مثل عنوان بريد الكتروني .
يمكنك قراءة المزيد عن الفلاتر من خلال درس فلاتر PHP .