2009-07-07 24 views
6

हाय मैं ज़ेंडमेल मॉड्यूल से जीमेल के माध्यम से कुछ ईमेल भेजने की कोशिश कर रहा हूं। यह मेरा कोड है:ज़ेंड मेल जीमेल एसएमटीपी

$config = array(
    'ssl' => 'tls', 
    'port' => 587, 
    'auth' => 'login', 
    'username' => '[email protected]', 
    'password' => 'password' 
); 
$smtpConnection = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); 

त्रुटि:

चेतावनी: stream_socket_enable_crypto() [streams.crypto]: इस धारा SSL/क्रिप्टो का समर्थन नहीं करता/पुस्तकालय/Zend/मेल/प्रोटोकॉल/एसएमटीपी में लाइन 206 टीएलएस के माध्यम से कनेक्ट करने के लिए

मैं phi.ini

में openssl.dll सक्षम करने के लिए मेरे होस्टिंग प्रदाता कह कोशिश में असमर्थ पर .php लेकिन वे कहते हैं कि n नहीं है सर्वर के बाद से लिनक्स में है और इसे opensl.dll को टीएलएस या एसएसएल के साथ काम करने की आवश्यकता नहीं है।

क्या मेरा होस्टिंग प्रदाता गलत है या मैं अपने कोड में कुछ गलत कर रहा हूं।

अग्रिम धन्यवाद

फैबियन

उत्तर

0

की स्थापना ssl का प्रयास करें: // होस्ट नाम के लिए उपसर्ग के रूप में और बंदरगाह के रूप में 465 का उपयोग करें।

+0

अब भी वही त्रुटि हो रही है। मेरे पास smtp.server \t = ssl: //smtp.gmail.com और पोर्ट 465 –

12

openssl.dll windows openssl एक्सटेंशन है।

लिनक्स पर आपको ओपनएसएसएल समर्थन के साथ PHP को संकलित करने की आवश्यकता है। http://www.php.net/manual/en/openssl.installation.php

आपको टीएलएस का उपयोग करने के लिए PHP सॉकेट और स्ट्रीम फ़ंक्शंस के लिए ओपनएसएसएल की आवश्यकता है। ज़ेंड इन कार्यों का उपयोग करता है और इस प्रकार इसकी आवश्यकता होती है।

+0

ओपनेंस सक्षम होने पर मुझे phpinfo में कैसे पता चलेगा? मैं देखता हूं कि यह ओपनएसएसएल/0.9.8 बी apache2handler –

+2

में आपको वास्तव में दो चीजों की आवश्यकता है, ओपनएसएसएल और टीएलएस को धारा/सॉकेट परिवहन के रूप में पंजीकृत किया जाना चाहिए। यह नीचे पाया जाना चाहिए: पंजीकृत स्ट्रीम सॉकेट ट्रांसपोर्ट ओपनएसएसएल को अपने ही शीर्षलेख के नीचे पाया जाना चाहिए क्योंकि यह एक सक्षम एक्सटेंशन है। Apache2handler apache कॉन्फ़िगरेशन दिखाता है, PHP नहीं। तो आपके पास ओपनएसएसएल आपके सर्वर पर संकलित है और इसका उपयोग करने के लिए अपाचे को कॉन्फ़िगर किया गया है, लेकिन आपके पास शायद PHP के साथ संकलित ओपनएसएसएल PHP एक्सटेंशन नहीं हैं। ओपनएसएसएल के लिए अपना PHP.ini खोजें और देखें कि आपको यह पता है या नहीं। – bucabay

+0

हाँ मेरे पास केवल: पंजीकृत स्ट्रीम सॉकेट ट्रांसपोर्ट \t टीसीपी, udp, यूनिक्स, udg और ओपनएसएसएल के लिए कोई हेडर नहीं है। तो मुझे लगता है कि समस्या मेरे होस्टिंग प्रदाता पक्ष पर थी। आपकी मदद के लिए बहुत बहुत धन्यवाद –

6

मैं एक ऐसी ही समस्या यहाँ हो रही थी कि क्या सफल है, का उपयोग Zend मेल ट्रांसपोर्ट और याहू smtp:

$mailhost= 'smtp.example.com'; 
$mailconfig = array(
    'auth'  => 'login', 
    'username' => '[email protected]', 
    'password' => 'topsecret', 
    'port'  => '465', 
    'ssl'  => 'ssl' 
); 
$transport = new Zend_Mail_Smtp($mailhost, $mailconfig); 
Zend_Mail::setDefaultTransport($transport); 

यह एक त्रुटि का उत्पादन किया: "अनुमति अस्वीकृत" और कोई मेल भेजा गया था। सभी समाधानों का प्रयास करने के तीन सप्ताह बाद मुझे वह काम मिल रहा था जो काम कर रहा था: $ परिवहन; $transport = new Zend_Mail_Transport_Sendmail('[email protected]',$mailhost, $mailconfig);

की उम्मीद के रूप में काम करता है ...

+1

अंत में सही जवाब! यह स्वयं सेटिंग्स नहीं थी, लेकिन तथ्य यह है कि Zend_Mail_Smtp का उपयोग जीमेल के साथ काम नहीं करता है, जबकि Zend_Mail_Transport_Sendmail करता है। – Elie

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