2013-02-14 11 views
7

पर काम नहीं करता है, यह एक बेवकूफ सवाल हो सकता है, लेकिन मुझे कारण नहीं मिल रहा है कि PHP मेल फ़ंक्शन काम क्यों नहीं करता है मेरे पास डेबियन निचोड़ पर एक nginx सर्वर है, मैं इसे स्थानांतरित कर दिया हाल ही में। मैंने सरल मेल निष्पादन की कोशिश की लेकिन यह झूठी वापसी।मेल() नए सर्वर

if(mail('[email protected]', 'test-subject', 'test-text-blablabla')) 
    echo 'ok'; 
else 
    echo 'bad'; 

मैं इसके साथ क्या कर सकता हूं?

धन्यवाद। php.ini की

अपने मेल अनुभाग:

[mail function] 
; For Win32 only. 
; http://php.net/smtp 
SMTP = localhost 
; http://php.net/smtp-port 
smtp_port = 25 

; For Win32 only. 
; http://php.net/sendmail-from 
;sendmail_from = [email protected] 

; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). 
; http://php.net/sendmail-path 
;sendmail_path = 

; Force the addition of the specified parameters to be passed as extra parameters 
; to the sendmail binary. These parameters will always replace the value of 
; the 5th parameter to mail(), even in safe mode. 
;mail.force_extra_parameters = 

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename 
mail.add_x_header = On 

; The path to a log file that will log all mail() calls. Log entries include 
; the full path of the script, line number, To address and headers. 
;mail.log = 
+6

क्या आपने त्रुटि लॉग की जांच की है? – zerkms

+1

क्या आप कमांड लाइन ईमेल भेज सकते हैं? –

+0

@Dagon मैं इसे कैसे कर सकता हूं? –

उत्तर

23

ठीक है, मैं इसे बनाया है। मैं कैसे nginx सर्वर के साथ डेबियन निचोड़ के लिए इसे बनाया है: (सभी आदेशों मैं जड़ उपयोगकर्ता से निष्पादित)

सबसे पहले आप

apt-get install sendmail 

अगले sendmail स्थापित करने की आवश्यकता है, तो आप इस फाइल कि तुलना में आसान था कॉन्फ़िगर करना होगा मैंने सोचा था कि

sendmailconfig 

ठीक है, अगले कदम के लिए मैं बना है कि एक php.ini विन्यास था (मैं एक महान व्यवस्थापक नहीं कर रहा हूँ, मैं एक शुरुआत कर रहा हूँ, इसलिए मैं नहीं जानता कि यह आवश्यक है या नहीं।)

मैं

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

ठीक है निर्धारित करते हैं, इस पल से, सैद्धांतिक रूप से, आप ईमेल भेज सकते हैं, लेकिन मेरे मामले के लिए यह 504 http त्रुटि प्रवेश द्वार टाइम-आउट का नेतृत्व किया। लेकिन जैसा कि मैंने बहुत बाद में पाया कि ईमेल पहले ही ईमेल बॉक्स में आया है। तो, अपने परीक्षण के लिए php फ़ाइल है:

<?php 
    mail('[email protected]', 'test', 'you done that'); 
    echo 'ok'; // I use this to check that script is end the execution 
?> 

कि बहुत स्पष्ट है।

अगली समस्या 504 त्रुटि है। मैं लॉग फाइल

nano /var/log/mail.log 

और यहाँ मैं इस त्रुटि को खोजने के लिए जाना (है कि न केवल एक त्रुटि है, लेकिन है कि एक 504 त्रुटि के लिए जिम्मेदार है):

sm-msp-queue[***]: My unqualified host name (myhostname) unknown; sleeping for retry 

फिर, कैसे पता लगाने के लिए मैं इस समस्या को हल कर सकते हैं: http://forums.fedoraforum.org/archive/index.php/t-85365.html उस पृष्ठ पर अंतिम टिप्पणी।

या किसी अन्य शब्द मैं इस बनाया:

nano /etc/hosts 

और उस फ़ाइल में मैं मेजबान

127.0.0.1 my_ip localhost myhostname 

बचाने के लिए, किया का क्रम बदलने के। अपनी टेस्ट php फ़ाइल खोलें, कोई भी 504 त्रुटि नहीं है और मेल मेल में उल्लेख ईमेल के लिए ईमेल आय है। जैसा कि मैंने कहा, मैं एक नौसिखिया हूं, और यह आपके लिए काम नहीं कर सकता है, लेकिन यह मेरे लिए किसी भी तरह से काम करता है। यह निश्चित रूप से अंत विन्यास नहीं है। उम्मीद है कि आपको यह उपयोगी लगेगा।

+0

अगर वहाँ एक आदमी है जो अच्छी तरह से इस में निपुण है, मैं अगर आप बहुत आभारी हो जाएगा यहां कुछ सलाह जोड़ सकते हैं। –

+3

मुझे 'apt-get installmail-bin' इंस्टॉल करना था और फिर, 'sendmail इंस्टॉल करें' प्राप्त करें। फिर, एक ई-मेल भेजने की कोशिश की और यह काम किया। मैंने php.ini में कोई बदलाव नहीं किया है। –

+0

@AlminoMelo थोड़ा देर से प्रतिक्रिया, लेकिन मुझे लगता है कि उन php.ini परिवर्तन मेल सेवाओं के स्पैम फ़िल्टर को एक अच्छे तरीके से प्रभावित कर सकते हैं। (निश्चित नहीं)। मुझे निश्चित रूप से पता है कि कभी-कभी मेरे ईमेल स्पैम फ़ोल्डर में आते हैं, और यह अपूर्ण ईमेल कॉन्फ़िगरेशन प्लस DNS ईमेल सेटिंग्स की परेशानियों के कारण होता है। –

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