2011-03-20 10 views
5

जब मैं ई-मेल चीजें भेजने के लिए टर्मिनल का उपयोग करता हूं तो सही तरीके से काम करता है। मैं निम्न आदेश का उपयोग:यह पता लगाने के लिए कि PHP और sendmail एक साथ काम कर रहे हैं या नहीं?

echo "Subject: test" | /usr/lib/sendmail -v [email protected] 

लेकिन जब मैं PHP में इस प्रयास करें:

पीएचपी प्रलेखन:

<?php bool mail (string $to , string $subject , string $message [, string $additional_headers [, string $additional_parameters ]]) ?> 

मेरी कार्यान्वयन:

<?php mail("[email protected]", "my topic", "my message contents", "From: [email protected]"); ?> 

, तो यह नहीं है काम कर रहे। ऐसा क्यों है? मुझे लगता है कि इसे PHPs php.ini फ़ाइल के साथ करना है?

सभी मैं कॉन्फ़िगर किया गया:

  • खुला php.ini:

    nano /etc/php5/apache2/php.ini

  • टिप्पणी हटाएं sendmail_path और लिखें:

    sendmail_path = /usr/sbin/sendmail

  • टिप्पणी हटाएं sendmail_from और लिखने:

    sendmail_from = [email protected]

  • पुनः आरंभ अपाचे:

    /etc/init.d/apache2 restart

क्या मामला हो सकता है? यह अतिरिक्त स्पष्ट करने के लिए: मैं चाहता हूं कि PHP ई-मेल कर सके!

संपादित करें:

  • पीएचपी मेल() फ़ंक्शन एक FALSE देता है।
  • php.ini के लिए: बदलते /usr/lib/sendmail में /usr/sbin/sendmail (या दूसरी तरह के आसपास) किसी भी बनाने के लिए नहीं लगता है: बदलते /usr/lib/sendmail में /usr/sbin/sendmail (या दूसरी तरह के आसपास) टर्मिनल कमांड के लिए कोई फर्क
  • बनाने के लिए प्रतीत नहीं होता अंतर
  • मैंने स्पैम फ़ोल्डर में संदेशों के बिना दोनों को अपने डोमेन और जीमेल दोनों में संदेश भेजे।

सेंडमेल के लॉगफ़ाइल:

[email protected]:/var/log# cat mail.warn 

[email protected]:/var/log# cat mail.err 

[email protected]:/var/log# cat mail.log 
Mar 20 10:17:09 machine sendmail[12249]: p2K9H2R9012249: from=root, size=0, class=0, nrcpts=1, [email protected] 
Mar 20 10:17:20 machine sendmail[12253]: p2K9HImw012253: from=root, size=0, class=0, nrcpts=0, [email protected] 
Mar 20 10:17:25 machine sendmail[12255]: p2K9HOAC012255: from=root, size=0, class=0, nrcpts=1, [email protected] 
Mar 20 10:20:00 machine sendmail[12277]: p2K9K09k012277: from=root, size=14, class=0, nrcpts=3, msgid=<[email protected]>, [email protected] 
Mar 20 10:20:00 machine sm-mta[12279]: p2K9K0Ge012279: <[email protected]>... User unknown 
Mar 20 10:20:00 machine sendmail[12277]: p2K9K09k012277: to=-r, ctladdr=root (0/0), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=90014, relay=[127.0.0.1] [127.0.0.1], dsn=5.1.1, stat=User unknown 
Mar 20 10:20:00 machine sm-mta[12279]: p2K9K0Ge012279: from=<[email protected]>, size=290, class=0, nrcpts=2, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 
Mar 20 10:20:00 machine sm-mta[12279]: STARTTLS=client, relay=gmail-smtp-in.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=RC4-SHA, bits=128/128 
Mar 20 10:20:02 machine sm-mta[12279]: p2K9K0Ge012279: to=<[email protected]>, ctladdr=<[email protected]hine.domain.com> (0/0), delay=00:00:02, xdelay=00:00:02, mailer=esmtp, pri=60290, relay=gmail-smtp-in.l.google.com. [74.125.77.27], dsn=2.0.0, stat=Sent (OK 1300612802 w59si3196382eeh.92) 
Mar 20 10:20:02 machine sm-mta[12279]: STARTTLS=client, relay=aspmx.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=RC4-SHA, bits=128/128 
Mar 20 10:20:04 machine sm-mta[12279]: p2K9K0Ge012279: to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:04, xdelay=00:00:02, mailer=esmtp, pri=60290, relay=aspmx.l.google.com. [74.125.79.27], dsn=2.0.0, stat=Sent (OK 1300612804 p50si3196335eei.44) 
Mar 20 10:20:04 machine sendmail[12277]: p2K9K09k012277: [email protected],[email protected], ctladdr=root (0/0), delay=00:00:04, xdelay=00:00:04, mailer=relay, pri=90014, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p2K9K0Ge012279 Message accepted for delivery) 
Mar 20 10:20:04 machine sendmail[12277]: p2K9K09k012277: p2K9K09l012277: DSN: User unknown 
Mar 20 10:20:04 machine sm-mta[12279]: p2K9K0Gg012279: from=<>, size=1921, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 
Mar 20 10:20:05 machine sm-mta[12279]: p2K9K0Gg012279: to=<[email protected]>, delay=00:00:01, xdelay=00:00:01, mailer=local, pri=31921, dsn=2.0.0, stat=Sent 
Mar 20 10:20:05 machine sendmail[12277]: p2K9K09l012277: to=root, delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=31038, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p2K9K0Gg012279 Message accepted for delivery) 
Mar 20 10:25:11 machine sendmail[12321]: p2K9PBC3: from=root, size=14, class=0, nrcpts=1, msgid=<[email protected]>, [email protected] 
Mar 20 10:25:11 machine sm-mta[12323]: p2K9PBLe: from=<[email protected]>, size=318, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 
Mar 20 10:25:11 machine sm-mta[12323]: STARTTLS=client, relay=gmail-smtp-in.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=RC4-SHA, bits=128/128 
Mar 20 10:25:12 machine sm-mta[12323]: p2K9PBLe: to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=30318, relay=gmail-smtp-in.l.google.com. [74.125.77.27], dsn=2.0.0, stat=Sent (OK 1300613112 u12si3204796eeh.99) 
Mar 20 10:25:12 machine sendmail[12321]: p2K9PBC3: [email protected], ctladdr=root (0/0), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30014, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p2K9PBLeMessage accepted for delivery) 
Mar 20 11:00:17 machine sendmail[12567]: p2KA0HX9012567: from=root, size=20, class=0, nrcpts=1, msgid=<[email protected]>, [email protected] 
Mar 20 11:00:17 machine sm-mta[12568]: p2KA0HNn012568: from=<[email protected]>, size=324, class=0, nrcpts=1, msgid=<[email protected]>, proto=ESMTP, daemon=MTA-v4, relay=localhost [127.0.0.1] 
Mar 20 11:00:17 machine sm-mta[12568]: STARTTLS=client, relay=gmail-smtp-in.l.google.com., version=TLSv1/SSLv3, verify=FAIL, cipher=RC4-SHA, bits=128/128 
Mar 20 11:00:18 machine sm-mta[12568]: p2KA0HNn012568: to=<[email protected]>, ctladdr=<[email protected]> (0/0), delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=30324, relay=gmail-smtp-in.l.google.com. [74.125.77.27], dsn=2.0.0, stat=Sent (OK 1300615218 w59si3268114eeh.65) 
Mar 20 11:00:18 machine sendmail[12567]: p2KA0HX9012567: [email protected], ctladdr=root (0/0), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30020, relay=[127.0.0.1] [127.0.0.1], dsn=2.0.0, stat=Sent (p2KA0HNn012568 Message accepted for delivery) 
Mar 20 11:16:23 machine sendmail[12675]: p2KAGNg8012675: from=www-data, size=188, class=0, nrcpts=0, msgid=<[email protected]>, [email protected] 
[email protected]:/var/log# 

EDIT2:

मैं समाधान मिल गया है!

यह मेरी अपेक्षा के अनुसार php.ini में कॉन्फ़िगर था।

PHP में।आरं:

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

अब, भी क्यों समझने के लिए, क्योंकि मैं this site पर आयकर पाया और उसके बाद मैं php.ini फ़ाइल अपने आप में मैं पाया कोशिश की सुविधा देता है। क्या और मतलब है ??

-t संदेश शीर्षकों से प्राप्तकर्ता निकालें। ये कमांड लाइन पर निर्दिष्ट किसी भी प्राप्तकर्ता में जोड़े गए हैं। 2.1 से पहले पोस्टफिक्स संस्करणों के साथ, इस विकल्प के लिए कमांड लाइन पर कोई प्राप्तकर्ता पता निर्दिष्ट नहीं है।

-i मानक इनपुट से संदेश पढ़ने पर, केवल एक के साथ लाइन का इलाज न करें। इनपुट के अंत के रूप में चरित्र।

source

आशा मैं आप में से जो कि इसी तरह की समस्याओं के लिए दौड़ा मदद कर सकता है।

+2

"यह काम नहीं कर रहा है" अच्छी जानकारी नहीं है। आपको क्या त्रुटि संदेश मिलते हैं? आपके लॉग में आपके पास क्या है? – Mat

+2

आपका टर्मिनल उदाहरण '/ usr/lib/sendmail' का उपयोग करता है लेकिन आपने php में '/ usr/sbin/sendmail' को कॉन्फ़िगर किया है।ini – mario

+2

पहली सैनिटी जांच: क्या आपने स्पैम फ़ोल्डर की जांच की है? दूसरा, क्या विधि 'TRUE' या 'FALSE' लौटाती है? 'TRUE' का अर्थ है 'मेल' कम से कम * प्रयास * ई-मेल भेजने में सक्षम था। – nitro2k01

उत्तर

1

मामला क्या हो सकता है? यह अतिरिक्त स्पष्ट करने के लिए: मैं चाहता हूं कि PHP ई-मेल कर सके!

आपके मामले में मामला या बेहतर कारण यह है कि मेल() फ़ंक्शन और प्रेषण जूते की दो अलग-अलग जोड़ी हैं। वे एक-दूसरे से संबंधित नहीं हैं।

इसलिए केवल इसलिए कि आप sendmail प्रोग्राम का उपयोग करके ईमेल भेज सकते हैं इसका मतलब यह नहीं है कि PHP मेल() फ़ंक्शन ईमेल भी भेजेगा।

जो आप सामना कर रहे हैं वह आपके PHP स्थापना की कॉन्फ़िगरेशन समस्या है। PHP डिफ़ॉल्ट रूप से ईमेल भेजने के लिए बहुत अच्छा है लेकिन PHP सभी सेटअप को जानने में सक्षम नहीं है, इसलिए यदि मेल() विफल रहता है तो आपको गीलेर की जांच करने की आवश्यकता है या नहीं, आपने ईमेल भेजने के लिए PHP को ठीक से कॉन्फ़िगर किया है।

कॉन्फ़िगर करने के लिए और अधिक जानने के लिए एक अच्छी शुरुआत, नोट्स और नोटिस के साथ-साथ संबंधित जानकारी PHP मैनुअल है: mail() function

एक पहली सैनिटी जांच - जैसा कि अन्य ने पहले ही टिप्पणी की है - मेल() फ़ंक्शन के वापसी मूल्य की जांच करना है। यदि यह गलत है, तो PHP जानता है कि मेल भेजना विफल रहा है।

यदि यह सत्य है और आपको अभी भी ईमेल (आउट) नहीं मिलता है, तो कुछ अन्य घटक ईमेल को आगे बढ़ाने में सहायक नहीं हैं। आपको परिवहन की पूरी श्रृंखला की जांच करने की आवश्यकता है - और इसे बोल्ड करने के लिए - आपको अपनी समग्र कॉन्फ़िगरेशन में कई त्रुटियां हो सकती हैं जो आपको PHP के माध्यम से ईमेल भेजने से रोकती हैं, भले ही आप खोल से कुछ भेज सकें।

यदि यह आपके लिए बहुत जटिल है तो मेरा सुझाव है कि आप एक सिस्टम प्रशासक के संपर्क में आएं जो आपकी समस्या को हल करने में आपकी मदद कर सकता है।

बीटीडब्ल्यू आप अपना खुद का रैपर लिख सकते हैं और शेल कमांड के साथ ईमेल भेज सकते हैं: shell_exec, ध्यान रखें।

+0

सिस्टम प्रशासक जो आपकी समस्या को हल करने में आपकी मदद कर सकते हैं। कि पहले एक होना; पी –

0

आप मेल लॉग फ़ाइल की जांच करके शुरू कर सकते हैं। यह स्थान आपके सिस्टम पर निर्भर करता है लेकिन यह मानक Ubuntu स्थापना पर /var/log/mail.log में पाया जा सकता है। आपको अपना PHP कोड चलाने का प्रयास करना चाहिए, फिर जांच करनी चाहिए कि कुछ भी लॉग है या नहीं।

+0

धन्यवाद ईवान हेमिंग, मैंने अभी अपना लॉगफाइल जोड़ा – hsmit

+0

क्या लॉग फ़ाइल आपको कुछ बताती है? – hsmit

+0

क्या आपने PHP स्क्रिप्ट को फिर से चलाने का प्रयास किया ताकि यह देखने के लिए कि इसमें कोई नई लाइन शामिल है या नहीं? –

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