كيفية إرسال بريد إلكتروني باستخدام دالة PHP mail()
⚡ ملخص ذكي
دالة البريد في PHP هي دالة مدمجة تُرسل البريد الإلكتروني مباشرةً من سكربت PHP باستخدام إعدادات SMTP الخاصة بالخادم. يشرح هذا الدليل صيغة دالة mail() ومعاملاتها، وتكوين SMTP في ملف php.ini، وتنظيف مدخلات المستخدم باستخدام filter_var، وإرسال بريد إلكتروني آمن، واستخدام PHP.Mailلضمان التوصيل الموثوق.

ما هو بريد PHP؟
PHP mail هي وظيفة PHP المدمجة التي تُستخدم لإرسال رسائل البريد الإلكتروني من نصوص PHP البرمجية.
تقبل وظيفة البريد المعلمات التالية:
- عنوان البريد الإلكتروني
- الموضوع
- رسالتك
- عناوين البريد الإلكتروني CC أو BCC
لماذا ومتى نستخدم PHP mail
تُعد وظيفة البريد مفيدة في العديد من المواقف:
- إنها طريقة فعالة من حيث التكلفة لإخطار المستخدمين بالأحداث المهمة.
- اسمح للمستخدمين بالتواصل معك عبر البريد الإلكتروني من خلال توفير نموذج الاتصال بنا على موقع الويب الذي يرسل المحتوى المقدم عبر البريد الإلكتروني.
- يمكن للمطورين استخدامه لتلقي أخطاء النظام عبر البريد الإلكتروني.
- يمكنك استخدامه لإرسال البريد الإلكتروني إلى المشتركين في النشرة الإخبارية الخاصة بك.
- يمكنك استخدامه لإرسال روابط إعادة تعيين كلمة المرور إلى المستخدمين الذين ينسون كلمات مرورهم.
- يمكنك استخدامه لإرسال روابط التفعيل والتأكيد عبر البريد الإلكتروني. وهذا مفيد عند تسجيل المستخدمين والتحقق من عناوين بريدهم الإلكتروني.
إرسال البريد باستخدام PHP
تحتوي دالة البريد الإلكتروني في PHP على الصيغة الأساسية التالية.
<?php mail($to_email_address,$subject,$message,[$headers],[$parameters]); ?>
هنا،
- "$to_email_address" هو عنوان البريد الإلكتروني لمتلقي البريد
- "$subject" هو موضوع البريد الإلكتروني
- "$message" هي الرسالة التي سيتم إرسالها.
- "[$headers]" اختياري؛ ويمكن استخدامه لتضمين معلومات مثل CC وBCC.
- CC هو اختصار لعبارة "نسخة كربونية". يُستخدم هذا الاختصار عندما ترغب في إرسال نسخة إلى شخص معني، أي أن رسالة بريد إلكتروني تُرسل كشكوى إلى شركة ما يمكن إرسالها أيضًا كنسخة إلى مجلس الشكاوى.
- BCC هو اختصار لعبارة "نسخة كربونية مخفية". وهو مشابه لعبارة CC، ولكن عناوين البريد الإلكتروني الموجودة في قسم BCC لا تظهر للمستلمين الآخرين.
الاشارات Mail Transmission البروتوكول (SMTP)
يستخدم PHP mail Mail Transmission بروتوكول (SMTP) لإرسال البريد.
على الخادم المستضاف، تكون إعدادات SMTP قد تم ضبطها بالفعل.
يمكن ضبط إعدادات البريد الإلكتروني SMTP من ملف "php.ini" الموجود في مجلد تثبيت PHP.
لتكوين إعدادات SMTP على جهازك المحلي، بافتراض أنك تستخدم XAMPP على Windows، حدد موقع ملف "php.ini" في الدليل "C:\xampp\php".
- افتح الملف باستخدام برنامج المفكرة أو أي محرر نصوص آخر. سنستخدم برنامج المفكرة في هذا المثال. انقر على قائمة "تحرير".
- انقر على قائمة "بحث..."
- سيظهر مربع حوار البحث
- انقر على زر "البحث عن التالي".
حدد موقع الإدخالات الموجودة ضمن [وظيفة البريد]. عادةً ما تبدو الأسطر الافتراضية كما يلي:
- ; SMTP = المضيف المحلي
- ; ميناء smtp = 25
قم بإزالة الفواصل المنقوطة قبل SMTP و smtp_port، واضبط SMTP على عنوانك. خادم SMTP والمنفذ الخاص بمنفذ SMTP. يجب أن تبدو إعداداتك كما يلي:
- SMTP = smtp.example.com
- ميناء smtp = 25
ملاحظة: يمكن الحصول على إعدادات SMTP من مزود خدمة استضافة المواقع الإلكترونية الخاص بك. إذا كان الخادم يتطلب مصادقة، فأضف الأسطر التالية:
- auth_username = example_username@example.com
- auth_password = example_password
احفظ التغييرات الجديدة وأعد تشغيل Apache الخادم.
PHP Mail مثال
لنلقِ نظرة الآن على مثال يرسل بريدًا إلكترونيًا بسيطًا.
<?php $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; mail($to_email,$subject,$message,$headers); ?>
الإخراج:
ملاحظة: المثال أعلاه يأخذ فقط المعلمات الأربع الإلزامية. يجب عليك استبدال عنوان البريد الإلكتروني الوهمي المذكور أعلاه بعنوان بريد إلكتروني حقيقي.
تطهير مدخلات البريد الإلكتروني للمستخدم
يستخدم المثال أعلاه قيمًا مبرمجة في الكود المصدر لعنوان البريد الإلكتروني وتفاصيل أخرى من أجل التبسيط.
لنفترض أنك مطالب بإنشاء نموذج "اتصل بنا" حيث يقوم المستخدمون بملء التفاصيل ثم إرسالها.
- يمكن للمستخدمين إدخال التعليمات البرمجية في رؤوس الرسائل عن طريق الخطأ أو عن قصد، مما قد يؤدي إلى إرسال رسائل بريد إلكتروني غير مرغوب فيها.
- لحماية نظامك من مثل هذه الهجمات، يمكنك إنشاء وظيفة مخصصة لتطهير القيم والتحقق من صحتها قبل إرسال البريد.
لنقم بإنشاء دالة مخصصة للتحقق من صحة عنوان البريد الإلكتروني وتنظيفه باستخدام الدالة المدمجة filter_var. تُستخدم الدالة filter_var لتنظيف بيانات المستخدم والتحقق من صحتها.
يحتوي على بناء الجملة الأساسي التالي.
<?php filter_var($field, SANITIZATION_TYPE); ?>
هنا،
- "filter_var(...)" هي وظيفة التحقق من الصحة والتعقيم
- "الحقل $" هو قيمة الحقل المراد تصفيته.
- "نوع_التعقيم" هو نوع التعقيم الذي سيتم إجراؤه على الحقل، مثل:
- فلتر_التحقق_من_البريد_الإلكتروني – تُرجع القيمة "صحيح" لعناوين البريد الإلكتروني الصحيحة و"خطأ" لعناوين البريد الإلكتروني غير الصحيحة.
- فلتر_تعقيم_البريد_الإلكتروني – يزيل الأحرف غير القانونية من عناوين البريد الإلكتروني، بحيث يتم اختصار العنوان الذي يحتوي على أحرف دخيلة إلى info@domain.com.
- تعقيم الفلترURL – يزيل الأحرف غير المسموح بها من URLs، تاركاً عنواناً نظيفاً مثل https://www.example.com.
- FILTER_SANITIZE_STRING يزيل هذا الخيار الوسوم من القيم النصية، لذا تصبح العبارة am bold هي am bold. لاحظ أن هذا الخيار مُهمل في PHP 8.1؛ استخدم htmlspecialchars() بدلاً منه.
يستخدم الكود أدناه دالة مخصصة لإرسال بريد إلكتروني آمن.
<?php function sanitize_my_email($field) { $field = filter_var($field, FILTER_SANITIZE_EMAIL); if (filter_var($field, FILTER_VALIDATE_EMAIL)) { return true; } else { return false; } } $to_email = 'name@example.com'; $subject = 'Testing PHP Mail'; $message = 'This mail is sent using the PHP mail function'; $headers = 'From: noreply@example.com'; // check if the email address is invalid $secure_check = sanitize_my_email($to_email); if ($secure_check == false) { echo "Invalid input"; } else { // send email mail($to_email, $subject, $message, $headers); echo "This email is sent using PHP Mail"; } ?>
الإخراج:
يمكن اعتراض رسائل البريد الإلكتروني أثناء إرسالها من قبل مستلمين غير مقصودين.
قد يؤدي ذلك إلى كشف محتويات البريد الإلكتروني لمستلمين غير مقصودين.
يحل البريد الآمن هذه المشكلة عن طريق transmitإرسال رسائل البريد الإلكتروني عبر اتصال مشفر باستخدام SSL أو TLS، على سبيل المثال SMTP عبر SSL على المنفذ 465 أو STARTTLS على المنفذ 587.
يقوم التشفير بتشويش الرسالة قبل إرسالها، بحيث لا يمكن قراءتها إلا من قبل خادم البريد الخاص بالمستلم المقصود.
PHPMailer: بديل أفضل لـ mail()
بالنسبة للتطبيقات الحقيقية، يستخدم معظم المطورين لغة PHPMailمكتبة er بدلاً من دالة البريد الخام mail(). PHPMailيقوم النظام بالمصادقة مع خادم SMTP خارجي، مما يحسن بشكل كبير من إمكانية التسليم، ويجعل المرفقات ورسائل البريد الإلكتروني بتنسيق HTML أمرًا بسيطًا.
قم بتثبيته باستخدام Composer، ثم أرسل البريد من خلال اتصال SMTP موثق ومشفر كما هو موضح أدناه.
<?php use PHPMailer\PHPMailer\PHPMailer; require 'vendor/autoload.php'; $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; $mail->Password = 'secret'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; $mail->setFrom('noreply@example.com', 'My App'); $mail->addAddress('name@example.com'); $mail->Subject = 'Testing PHPMailer'; $mail->Body = 'This email is sent using PHPMailer over SMTP'; $mail->send(); ?>
بالمقارنة مع دالة mail()، فإن لغة PHPMailيوفر لك er مصادقة SMTP، وتشفيرًا مدمجًا، ودعمًا للمرفقات، ومعالجة أوضح للأخطاء، وهذا هو السبب في أنه الخيار الموصى به لبريد الإنتاج.






