تفعيل دالة mail() في PHP على حسابك
دالة mail() معطّلة افتراضيًا لأن رسائلها نادرًا ما تُسلَّم. وكيف تفعّلها إن اضطررت، ولماذا SMTP هو الجواب الأفضل.
دالة mail() في PHP معطّلة على حسابات WebGee افتراضيًا. وهذا يشرح لماذا، وكيف
تفعّلها إن كنت تحتاجها فعلًا.
البريد المرسَل عبر mail() احتمال وصوله إلى صندوق وارد ضعيف جدًا. وتفعيلها غير
محبَّذ بشدة — ففي كل حالة تقريبًا يكون الحل الصحيح هو SMTP، وهو يستغرق القدر
نفسه من الجهد ويُسلَّم فعلًا.
لماذا هي معطّلة
لسببين.
الرسائل المرسَلة هكذا تُعامَل بوصفها انتحالًا عادةً. فـ mail() ترحّل عبر
اسم مضيف الخادم، بينما يضبط تطبيقك عنوان From على نطاقك أنت. فترى الخوادم
المستقبِلة تعارضًا بين من تدّعي الرسالة أنها منه وبين مصدرها الفعلي، فتصفّيها
تبعًا لذلك.
وهي كثيرة الإساءة. فسكربت مخترَق واحد يستخدم mail() قد يرسل آلاف الرسائل
قبل أن ينتبه أحد، وهو ما يضرّ بسمعة الإرسال لعناوين IP يتقاسمها كل عميل على ذلك
الخادم.
استخدم SMTP بدلًا منها
الإرسال عبر صندوق موثَّق على نطاقك يحلّ التعارض تمامًا — فتُوقَّع الرسالة، وتجتاز SPF وDKIM، وتصل.
- ووردبريس — إرسال بريد ووردبريس عبر SMTP
- PHP مخصّص — استخدم PHPMailer أو Symfony Mailer بالإعدادات في إعدادات خادم البريد
- أي تطبيق آخر — لمعظمها خيار SMTP في إعداداتها
إن كنت لا تزال تحتاج mail()
-
في cPanel، افتح Select PHP Version.
-
اختر Options.
-
اضبط
sendmail_pathعلى:/usr/sbin/sendmail -t -i
ويسري التغيير فورًا.
تأكّد أنه نجح
php -r 'var_dump(mail("you@example.com","test","test body"));'وقيمة bool(true) تعني أن PHP سلّمت الرسالة — ولا تعني أنها سُلِّمت إلى
المستقبِل. تحقّق من وصولها فعلًا، بما في ذلك مجلد السبام.
فإن لم تصل، فتلك هي النتيجة المتوقعة الموصوفة أعلاه لا عطل. انتقل إلى SMTP.