2011-10-27 9 views
12

मैं पंजीकरण, निमंत्रण आदि के लिए ईमेल भेजने की कोशिश कर रहा हूं।PHP मेल नहीं भेजा जाता है, मैं डीबग कैसे करूं?

स्थानीय विकास पर, ईमेल भेजे जाते हैं। हालांकि सर्वर पर एक बार कोई मेल नहीं आती है।

मैंने पोस्टफिक्स स्थापित किया। मैं एक मेल सर्वर स्थापित करने की कोशिश कर रहा था लेकिन छोड़ दिया। तो वर्तमान में, यदि मैं टर्मिनल

ईमेल में आता है। हालांकि, इस ईमेल भेजने के लिए नहीं करता है:

$res = mail('[email protected]', 'subj', 'bodddd'); 

न केवल कि, लेकिन गूंज $res कुछ भी नहीं देता है। न तो true और न ही false

मैं इसे कैसे काम करने के लिए और कैसे कर सकता हूं?

thanx

+1

कुछ भी ट्रिगर होने पर अपने मिलोग में देखने का प्रयास करें। आमतौर पर/var/log/maillog के अंतर्गत स्थित है। – Oldskool

+1

'$ res' में कुछ होना चाहिए, क्या आपके पास' error_reporting = E_ALL' और 'display_errors = ऑन' है? 'var_dump ($ res) की कोशिश भी करें;' – user973254

+0

प्रारूप मेल (से, विषय, संदेश, शीर्षलेख, पैरामीटर) होना चाहिए – devtut

उत्तर

15

ऊपर अपनी टिप्पणी के अनुसार, ऐसा लगता है कि आपके sendmail पथ की तरह गलत है या अपने php.ini में बाहर टिप्पणी की है।

sendmail_path = /usr/sbin/sendmail -t -i 

यदि आप अनिश्चित हैं जहाँ आपके sendmail द्विआधारी बसता था, आप इसे पा सकते हैं कर रहे हैं का उपयोग करके:: यह कुछ इस तरह होना चाहिए

whereis sendmail 
+0

हां, मुझे अंत में '-t' जोड़ना पड़ा। मुझे नहीं पता कि यह क्या करता है या क्यों गुम हो रहा था, लेकिन अब यह काम कर रहा है। Graciaz – mgPePe

+2

आप इसके बजाय "कौन सा प्रेषण" का उपयोग कर सकते हैं, जिसके परिणामस्वरूप यह केवल परिणामों में बाइनरी लाएगा। –

+1

अच्छा, "-t -i" झंडे वास्तव में मेरे लिए अंतर बना दिया! :) वो क्या करते हैं? –

3

समाधान पर करने के लिए होस्टिंग साझा था मेरे लिए काम किया mail फ़ंक्शन में -f अतिरिक्त पैरामीटर का उपयोग करें। इसके बजाय ...

mail($to, $subject, $body, $headers);

मैं का इस्तेमाल किया था ...

mail($to, $subject, $body, $headers, " [email protected]");

the php manual के अनुसार अतिरिक्त पैरामीटर हैं sendmail के रूप में अतिरिक्त तर्क प्रदान करता है। ध्यान दें कि -f के बीच की जगह की कमी और ईमेल जानबूझकर लगता है।

मेरे मामले में एक विशेष होस्ट पर मुझे पोस्टफिक्स/प्रेषण लॉग तक पहुंच नहीं थी। मूल आदेश सत्य लौटा और एक सीपीएनल लॉग दिखाया गया कि इसे डिलीवरी के लिए स्वीकार किया गया था, हालांकि प्राप्तकर्ता इसे कभी प्राप्त नहीं हुआ था।

संबंधित मुद्दे