2011-08-18 14 views
6

मैं इस स्क्रिप्ट है:पियर मेल का उपयोग करके मेल भेजने के लिए इस PHP स्क्रिप्ट के साथ क्या गलत है?

require_once "Mail.php"; 

$from = "Stephen <[email protected]>";//Google apps domain 
$to = "[email protected]"; 
$subject = "Hi!"; 
$body = "Hi,\n\nHow are you?"; 

$host = "mail.nvrforget.com"; 
$username = "[email protected]"; 
$password = "password"; 

$headers = array ('From' => $from, 
    'To' => $to, 
    'Subject' => $subject); 
$smtp = Mail::factory('smtp', 
    array ('host' => $host, 
    'auth' => true, 
    'username' => $username, 
    'password' => $password)); 

$mail = $smtp->send($to, $headers, $body); 

if (PEAR::isError($mail)) { 
    echo("<p>" . $mail->getMessage() . "</p>"); 
    } else { 
    echo("<p>Message successfully sent!</p>"); 
    } 

मैं इस त्रुटि के साथ आ रहा हूँ:

Non-static method Mail::factory() should not be called statically 

किसी भी विचार कैसे इसे ठीक करने के लिए? सर्वर पर पियर मेल स्थापित है।

+0

सही दिखता है। क्या आप सुनिश्चित हैं कि आपकी पियर मेल लाइब्रेरी ठीक से शामिल की जा रही है? – labue

उत्तर

11

Non-static method Mail::factory() should not be called statically

यह एक गैर घातक नोटिस पीएचपी से आ रही है क्योंकि पीईआर मेल प्रागैतिहासिक है और इसे 512 साल पहले PHP5 में पेश किए गए static कीवर्ड का उपयोग करने के लिए अपडेट नहीं किया गया है।

reviewing the documentation के बाद, Mail::factoryपर आपकी कॉल पूरी तरह से सही और सामान्य दिखती है।

आप हमें यह बताने में असफल रहे कि अगर send पर कॉल सफल हो या विफल हो जाए। यदि यह सफल हो रहा है, लेकिन मेल कभी नहीं दिया जा रहा है, तो कृपया एसएमटीपी सर्वर लॉग की जांच करें। यदि यह असफल हो रहा है, तो वास्तविक त्रुटि संदेश क्या है? Mail::send दस्तावेज़ में त्रुटियों की एक विस्तृत सूची शामिल है।

आप आधुनिक मेल भेजने वाले पुस्तकालय जैसे Swiftmailer का उपयोग करने पर विचार करना चाहेंगे।

+0

आह ... बहुत रोचक। प्रेषण सफल नहीं लगता है। मैं स्विफ्टमेलर को आजमाउंगा, क्योंकि मैं निश्चित रूप से एक और अधिक आधुनिक पुस्तकालय रखना पसंद करूंगा। धन्यवाद। – chromedude

-2

शायद इसे गायब एम्पर्सेंड के साथ करना है?

मैं प्रलेखन उदाहरण में देखते हैं, कारखाने के उपयोग इस तरह दिखता है:

// Create the mail object using the Mail::factory method 
$mail_object =& Mail::factory('sendmail', $params); 

नोट असाइनमेंट का उपयोग कर = &

+1

-1, PHP5 में संदर्भ द्वारा वस्तुओं को पारित करने की कोई आवश्यकता नहीं है। वह वाक्यविन्यास केवल PHP4 के लिए है। – Charles

-2

सभी नाशपाती/मेल कॉलों के लिए @ @ को प्रस्तुत किया गया। कभी-कभी आप मेल :: फैक्ट्री() को समाप्त कर सकते हैं, सांख्यिकीय रूप से त्रुटि नहीं कहा जाना चाहिए

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