php mail() لا يعمل في نظام التشغيل Windows 2003، IIS SMTP

StackOverflow https://stackoverflow.com/questions/38920

  •  09-06-2019
  •  | 
  •  

سؤال

أواجه هذه المشكلة:

PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for chris.mahan@gmail.com in c:\inetpub\wwwroot\mailtest.php on line 12 

من هذا البرنامج النصي:

<?php
$to = "chris.mahan@gmail.com";
$subject = "test";
$body = "this is a test";

if (mail($to, $subject, $body)){
    echo "mail sent";
}
else {
    echo "problem";
}
?>

قسم من php.ini على الخادم:

[mail function]
; For Win32 only.
SMTP = server.domain.com; for Win32 only
smtp_port = 25

; For Win32 only.
sendmail_from = support@domain.com
; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =

(لاحظ أن "الخادم" و"المجال" يشيران بدقة إلى اسم الخادم والمجال الفعليين)

في IIS، يتم تشغيل SMTP.تحت "Access" فاتورة غير مدفوعة، "Relay" يتم تعيين الزر تحديد أجهزة الكمبيوتر التي يمكنها الترحيل عبر هذا الخادم الظاهري checkbox "only the list below" وعلى القائمة "127.0.0.1(xxx.xxx.xxx.xxx)" (x's representing actual server IP address).

الخادم قيد التشغيل Windows Server 2003 Service Pack 2, ، تم تصحيحه بالكامل اعتبارًا من الساعة 5 مساءً في الأول من سبتمبر 2008.أفترض أنه قيد التشغيل IIS7 (كيف تفحص؟).

أيه أفكار؟

ردا على إسبو:تتم استضافة هذا الجهاز في مركز البيانات.لا نريد استخدام حساب Gmail (نحن نفعل ذلك، ونريد الابتعاد عن ذلك).يأتي Windows Server 2003 مع خادم SMTP الخاص به.

تحديث:وفقًا لنصيحة Yaakov Ellis، فقد أسقطت جميع قيود الترحيل وأضفت عنوان IP الخاص بالخادم إلى القائمة المسموح بها (باستخدام زر DNS العكسي المتوفر) وبدأ الأمر في العمل.

شكرًا لكل من إسبو وياكوف لمساعدتي.

هل كانت مفيدة؟

المحلول

حاول إزالة قيود IP الخاصة بالترحيل في خادم SMTP، وفتحه لجميع المرحلات.إذا نجح الأمر عند تعيين هذا، فأنت تعلم أن المشكلة تتعلق بالقيود الأصلية.في هذه الحالة، قد تكون المشكلة تتعلق بـ DNS، أو ربما كان عنوان IP خاطئًا مدرجًا.

نصائح أخرى

أنت تستخدم خادم SMTP غير صحيح.إذا كنت سترسل رسائل بريد إلكتروني إلى حساب Gmail الخاص بك فقط، فقم بإلقاء نظرة على إجابتي هنا.

إذا كنت بحاجة أيضًا إلى إرسال بريد إلكتروني إلى حسابات أخرى، فاطلب من مزود خدمة الإنترنت تفاصيل SMTP الخاصة بك.

يحرر:أعتقد أنه من الأفضل دائمًا استخدام خادم ISP SMTP لأنه (ينبغي) أن يكون لديه أشخاص يراقبون قوائم انتظار البريد، ويتحققون من عمليات الاستغلال، ويحدثون برنامج البريد.إذا كان عملك يقوم بتطوير تطبيقات الويب، فمن الأفضل دائمًا تقريبًا الالتزام بما تفعله، والسماح للآخرين بالقيام بأشياءهم (على سبيل المثال، تشغيل خوادم البريد).

إذا كنت لا تزال ترغب لسبب ما في استخدام خادم SMTP المحلي، فإن أول شيء هو استبعاد جزء php.حاول المتابعة KB153119 ثم تحقق من SMTPServer IISlog بحثًا عن الأخطاء.

تحرير 2:تقول مقالة قاعدة المعارف هذه إنها مخصصة للتبادل، ولكن يتم استخدام نفس الأوامر لخوادم SMTP الأخرى (بما في ذلك IIS) أيضًا، لذا يرجى المحاولة ومعرفة ما إذا كان بإمكانك إرسال رسائل بريد إلكتروني باستخدام الأمثلة الواردة في المقالة.

@إسبو:سأفعل ذلك إعادة KB153119.شكرًا.

حول خادم البريد:أنا أسمعك.

سوف أقوم بالتحديث عندما أكتشف المزيد.

@Espo، المقالة المعنية تتعلق بخوادم Exchange، وليس خادم IIS7.0 SMTP.

من الملخص:توضح هذه المقالة كيفية الاتصال telnet بالمنفذ 25 على جهاز كمبيوتر يقوم بتشغيل خدمات بروتوكول نقل البريد البسيط (SMTP) لاستكشاف مشكلات اتصال SMTP وإصلاحها.تنطبق المعلومات الواردة في هذه المقالة، بما في ذلك رسائل الخطأ، فقط على المشكلات التي تحدث عند محاولة حل مشكلات اتصال SMTP مع الخوادم المستندة إلى Microsoft Exchange وليس الغرض منها الأغراض العامة لاستكشاف الأخطاء وإصلاحها.

واجهت نفس المشكلة، PHP 5 على خادم IIS6، 2003.يفشل PHP دائمًا عند محاولة استخدام mail().لقد تمكنت من قبول البريد من php عن طريق تغيير قيود الترحيل من "القائمة أدناه فقط" (والتي تكون فارغة افتراضيًا) إلى "الكل باستثناء القائمة أدناه".يمكن العثور على قيود الترحيل في علامة التبويب "الوصول" في شاشات خصائص خوادم SMTP.بالطبع إذا كان الخادم مفتوحًا على الإنترنت، فيجب أن يكون المرء أكثر عقلانية بشأن قيود الترحيل هذه ولكن في حالتي يكون هذا على خادم افتراضي في صندوق تطوير.

امل ان يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top