2011-05-27 18 views
13

देता है मैं अपने सर्वर पर php mail() फ़ंक्शन का उपयोग करने का प्रयास कर रहा हूं। अजीब बात यह है कि यह सच हो जाता है लेकिन मुझे अपने ईमेल इनबॉक्स में कुछ भी प्राप्त नहीं होता है।मेल() विफल रहता है, लेकिन सत्य

फिर भी सीपीएनल ईमेल फॉरवर्डर ठीक काम कर रहा है।

तो प्रोजेक्टर एक ईमेल कॉन्फ़िगरेशन नहीं है क्योंकि फॉरवर्डर मुझे ईमेल भेजता है?

मैं में जोड़ने की कोशिश की:

ini_set("sendmail_from", "[email protected]"); 

लेकिन वह काम नहीं किया।

यहाँ मेरी कोड है:

$subject = "My Subject"; 
$body = "Email Body "; 
$headers = 'From: [email protected]' . "\r\n" . 
    'Reply-To: [email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

if (mail($email,$subject,$body,$headers)) 
    echo "Sent!"; 
else 
    echo "Fail!"; 
+6

ध्यान देने योग्य एक बात: "यह ध्यान रखना महत्वपूर्ण है कि मेल वितरण के लिए स्वीकार किया गया था, इसका मतलब यह नहीं है कि मेल वास्तव में इच्छित गंतव्य तक पहुंच जाएगा।" –

+2

अपने एसएमटीपी सर्वर के मेल लॉग की जांच करें। यह समझाएगा कि संदेश क्यों वितरित नहीं किया जा रहा है। –

+0

मुझे किसी समस्या के लिए होस्टिंग के साथ एक समस्या थी जब किसी कारण से मेरे कुछ ईमेल स्पैम के रूप में सूचीबद्ध थे। मुझे नहीं पता कि वे उस सूची को कैसे उत्पन्न करते हैं, लेकिन यह पूर्ण और पूर्ण बीएस है। आपके सर्वर में एक ही समस्या हो सकती है। यहां पढ़ें: http://community.godaddy.com/groups/email/forum/topic/not-receiving-all-of-my-e-mails/ - हो सकता है कि आपके पास जिस ईमेल का प्रयास कर रहे हैं उसके साथ आपको कई समस्याएं हो से संदेश भेजें। "सबसे आम संभावना यह है कि प्रेषक मेलसेवर प्रेषकबेसेज.org जैसे सार्वजनिक मेलिंग सूचियों से खराब मेल प्रतिष्ठा के साथ एक आईपी पते से भेज रहा था" –

उत्तर

6

कारण है कि इस समस्या का कारण बन सकता के असंख्य हैं। यहां कुछ हैं:

  1. मेल प्राप्त हुआ था, लेकिन स्पैम के रूप में चिह्नित किया गया था।
  2. प्राप्तकर्ता का पता गलत था।
  3. प्रेषण मेल सर्वर पर धीमी मेल कतार है।
  4. प्राप्त मेल सर्वर पर धीमी मेल कतार है।

mail() आउटगोइंग मेल सर्वर डिलीवरी के लिए संदेश स्वीकार करते समय सत्य लौटाता है। विफलता के बिंदु को खोजने के लिए आपको अन्य संभावनाओं का निवारण करने की आवश्यकता होगी।

+0

सही। ऐसा हो सकता है कि आपको कुछ दिनों बाद एक संदेश प्राप्त होगा। – Tadeck

+0

दिनों बाद ?? !!, प्रेषक या कुछ और स्थानांतरित करने का समय –

1

मुझे एक ऐसी स्क्रिप्ट के साथ यह समस्या थी जिसे मैं उसी डोमेन पर भेज रहा था और प्राप्त कर रहा था। क्या आपने एक अलग डोमेन पर रहने वाले ईमेल पते पर ईमेल भेजने का प्रयास किया है? यह संभावित मुद्दों को कम करने में मदद कर सकता है।

4

mail() फ़ंक्शन शायद ही कभी true के अलावा कुछ भी लौटाता है। यह केवल इस तथ्य की परवाह करता है कि इसे सफलतापूर्वक एमटीए (मेल ट्रांसफर एजेंट - यानी वास्तव में यह प्रोग्राम भेजता है) को ईमेल दिया गया है।

एमटीए केवल खराब होने पर तुरंत एक ईमेल को अस्वीकार कर देगा। इस मामले में, आपको PHP में एक त्रुटि मिलेगी। लेकिन यह कई कारणों से PHP से इसे स्वीकार करने के बाद एक ईमेल को अस्वीकार कर सकता है या भेजने में विफल रहता है, जिनमें से कोई भी PHP के बारे में कोई विचार नहीं होगा क्योंकि इसे पहले से ही true प्रतिक्रिया प्राप्त हुई है।

आपके एमटीए में एक त्रुटि लॉग होगा जिसमें आप स्थानीय रूप से त्रुटि होने पर अधिक जानकारी के लिए जांच कर सकते हैं।

1

हमें एक ही समस्या का सामना करना पड़ा। समाधान php.ini में उचित sendmail_path सेट किया गया था।

sendmail_path = "/ usr/sbin/sendmail आयकर मैं"

ऊपर स्थापना समस्या हल हो जाती।

1

एक परीक्षण ईमेल भेजने के बाद अपने mail.log की जाँच करें:

sudo tail -f /var/log/mail.log 

तो फिर तुम आईडी अंतिम ईमेल भेजने की कोशिश की करने के लिए सौंपा देख सकते हैं। जैसेमैं देख रहा हूँ:

Jan 11 23:03:14 vagrant-ubuntu-trusty-64 postfix/pickup[17228]: 69F3441529: uid=33 from=<www-data> 

69F3441529 अद्वितीय है कि ईमेल करने के लिए सौंपा आईडी है। फिर आप सभी लाइनों है कि आईडी के लिए लॉग grep कर सकते हैं ...

sudo grep 69F3441529 /var/log/mail.log 

इसके बाद आप किसी भी त्रुटि संदेश मौजूद हो सकता है स्पॉट में सक्षम होना चाहिए, और फिर गूगल उन्हें :)

0

में मेरी मामले में, IPv6 पते से IPv4 पते पर सर्वर सेटिंग्स बदलना समस्या हल हो गई।

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