2010-08-11 13 views
13

मैं ZendMail साथ एक ई-मेल भेजने के लिए कोशिश कर रहा हूँ (इस सरल स्क्रिप्ट यह सार)ज़ेंड मेल के साथ मेल भेजते समय समस्या?

<?php 
require_once 'Zend/Mail.php'; 

$mail = new Zend_Mail(); 
$mail->setBodyText('My Nice Test Text'); 
$mail->setBodyHtml('My Nice Test Text'); 
$mail->setFrom('[email protected]', 'Mr Example'); 
$mail->addTo('[email protected]', 'Mr Test'); 
$mail->setSubject('TestSubject'); 
$mail->send(); 
?> 

हालांकि मैं इस स्टैक ट्रेस मिलती है:

Fatal error: Uncaught exception 'Zend_Mail_Transport_Exception' with message 'Unable to send mail. ' in /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Sendmail.php:137 Stack trace: #0 /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Sendmail->_sendMail() #1 /usr/share/php/libzend-framework-php/Zend/Mail.php(1178): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail)) #2 /var/www/hexreaction/mail/index2.php(11): Zend_Mail->send() #3 {main} thrown in /usr/share/php/libzend-framework-php/Zend/Mail/Transport/Sendmail.php on line 137 

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

मैं मैं अपने ई-मेल भेजने के लिए एसएमटीपी का उपयोग करने की कोशिश नहीं कर रहा हूं और मुझे एक कम भयानक समस्या है, लेकिन फिर भी एक समस्या है।

<?php 
require_once 'Zend/Mail.php'; 
$config = array('auth' => 'login', 
       'username' => '[email protected]', 
       'password' => 'secretpass'); 

$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); 

$mail = new Zend_Mail(); 
$mail->setBodyText('This is the text of the mail.'); 
$mail->setFrom('[email protected]', 'Some Sender'); 
$mail->addTo('[email protected]', 'Some Recipient'); 
$mail->setSubject('TestSubject'); 
$mail->send($transport); 
?> 

यह फेंक को यह त्रुटि, मैं सच में नहीं मिलता है क्यों:

Fatal error: Class 'Zend_Mail_Transport_Smtp' not found in /var/www/hexreaction/mail/index3.php on line 7 

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

यह मेरा अंतिम काम कर कोड

require_once('Zend/Mail/Transport/Smtp.php'); 
require_once 'Zend/Mail.php'; 
$config = array('auth' => 'login', 
       'username' => '[email protected]', 
       'password' => 'somepass', 
       'ssl' => 'tls'); 

$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); 

$mail = new Zend_Mail(); 
$mail->setBodyText('This is the text of the mail.'); 
$mail->setFrom('[email protected]', 'Some Sender'); 
$mail->addTo('[email protected]', 'Some Recipient'); 
$mail->setSubject('TestSubject'); 
$mail->send($transport); 
+0

अपडेट किया गया Goles जवाब ** 'ssl' => 'टीएलएस', ** शीर्ष पर त्रुटि मेरा उत्तर –

+0

देखते हैं कि यह अविश्वसनीय है से बचने के लिए जोड़ने की जरूरत पर एक नजर है; अद्यतन के लिए धन्यवाद; मैं भविष्य में भी अपने प्रश्नों के लिए ऐसा करने वाला हूं। – Ahdee

उत्तर

15

है आप कर सकते हैं के रूप में स्टैक ट्रेस Zend_Mail में देखें Zend_Mail_Transport_Sendmail परिवहन एडाप्टर के रूप में उपयोग करता है।
तो सुनिश्चित करें कि एक sendmail- संगत MTA (उदा। पोस्टफिक्स) आपके सिस्टम पर चल रहा है।

एक विकल्प के रूप में आप Zend_Mail_Transport_Smtp परिवहन एडाप्टर का उपयोग और की तरह तो

$tr = new Zend_Mail_Transport_Smtp('mail.example.com', array(
    'auth'  => 'login', 
    'username' => $username, 
    'password' => $password, 
    'port'  => $port, 
)); 
Zend_Mail::setDefaultTransport($tr); 

संपादित किसी बाह्य SMTP-सर्वर इस्तेमाल कर सकते हैं: अपने 2 समस्या के लिए: एक

require_once('Zend/Mail/Transport/Smtp.php');

मदद करनी चाहिए । तो आप ऐसा कर सकते हैं

+0

मैं भी एसएमटीपी का उपयोग करने की कोशिश कर रहा हूं, (मेरी पोस्ट संपादित की गई है), और मुझे एक कम भयानक त्रुटि मिल रही है, लेकिन फिर भी एक त्रुटि है। – Goles

+0

धन्यवाद !, जीमेल भी एसएसएल की अपेक्षा करता है, इसलिए मैंने अपना अंतिम कामकाजी कोड जोड़ा :-) – Goles

2

Zend_Mail पर एक और बड़ी बात यह है कि chainable है है: अगर 'chainable' सही शब्द है

$mail = new Zend_Mail(); 
$mail->setBodyText('My Nice Test Text') 
    ->setBodyHtml('My Nice Test Text') 
    ->setFrom('[email protected]', 'Mr Example') 
    ->addTo('[email protected]', 'Mr Test') 
    ->setSubject('TestSubject') 
    ->send(); 

निश्चित रूप से पता नहीं है, लेकिन मुझे आशा है कि आप बिंदु मिल गया। यह सिर्फ एक नि: शुल्क टिप है। इस सवाल का जवाब (दाएं) दिया जाता है बेंजामिन

द्वारा
+1

अधिक जानकारी के लिए विधिChaining/Fluent इंटरफ़ेस देखें http://martinfowler.com/dslwip/MethodChaining.html –

0

अपडेट किया गया Goles जवाब शीर्ष पर 'ssl' => 'टीएलएस', जोड़ने के लिए त्रुटियों

require_once('Zend/Mail/Transport/Smtp.php'); 
require_once 'Zend/Mail.php'; 
$config = array(
       'ssl' => 'tls', 
       'auth' => 'login', 
       'username' => '[email protected]', 
       'password' => 'somepass' 
       ); 

$transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); 

$mail = new Zend_Mail(); 
$mail->setBodyText('This is the text of the mail.'); 
$mail->setFrom('[email protected]', 'Some Sender'); 
$mail->addTo('[email protected]', 'Some Recipient'); 
$mail->setSubject('TestSubject'); 
$mail->send($transport); 
0

भी से बचने के लिए अगर आप में मेल seand करना चाहते हैं की जरूरत है अनुलग्नक के साथ Magento निम्नलिखित स्निपेट

$config = array(
       'ssl' => 'tls', 
       'auth' => 'login', 
       'username' => '[email protected]', 
       'password' => 'yourPassword' 
       ); 

     $transport = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); 


     $bodytext = "Please see attachment for customers detail."; 
     $mail = new Zend_Mail(); 
     $mail->setFrom('[email protected]','Hassan'); 
     $mail->addTo('[email protected]'); 
     $mail->setSubject('Customers info'); 
     $mail->setBodyText($bodytext); 

     $file = $mail->createAttachment(file_get_contents($path.$fileName)); 
     $file ->type  = 'text/csv'; 
     $file ->disposition = Zend_Mime::DISPOSITION_INLINE; 
     $file ->encoding = Zend_Mime::ENCODING_BASE64; 
     $file ->filename = $fileName; 

     if(!$mail->send($transport)) { 
      echo 'Message could not be sent.'; 
      echo 'Mailer Error: ' . $mail->ErrorInfo; 
     } else { 
      echo 'Message has been sent'; 
     } 
     echo "File Completed";exit; 
    } 
संबंधित मुद्दे