it-swarm.com.de

Problem beim Mailversand mit Zend Mail?

Ich versuche eine E-Mail mit ZendMail zu senden (dieses einfache Skript fasst es zusammen)

<?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();
?>

Allerdings bekomme ich diesen Stack-Trace:

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

BEARBEITEN:

Ich versuche nicht, SMTP zum Senden meiner E-Mails zu verwenden, und ich habe ein weniger schreckliches Problem, aber immer noch ein Problem.

<?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);
?>

Dieser Wurf ist dieser Fehler, ich verstehe nicht wirklich warum:

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

EDIT 2:

Dies ist mein endgültiger Arbeitscode

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);
16
Goles

Wie Sie im Stack-Trace sehen können, verwendet Zend_MailZend_Mail_Transport_Sendmail als Transportadapter.
Stellen Sie also sicher, dass auf Ihrem System ein sendmail-kompatibles MTA (z. B. Postfix) ausgeführt wird.

Alternativ können Sie den Zend_Mail_Transport_Smtp transport-Adapter verwenden und so einen externen SMTP-Server verwenden

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

Edit: Für dein 2. Problem: a 

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

sollte helfen.

16
Benjamin Cremer

Eine weitere großartige Sache bei Zend_Mail ist die Kettenfunktion, also können Sie folgendes tun:

$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();

Ich weiß nicht genau, ob 'kettenfähig' das richtige Wort ist, aber ich hoffe, Sie haben den Punkt verstanden. Dies ist nur ein kostenloser Tipp. Die Antwort wird (rechts) von Benjamin gegeben

2
Ronn0

Wenn Sie E-Mails in Magento mit Anhang versenden möchten, sehen Sie sich den folgenden Ausschnitt an

$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;
    }
1

Aktualisierte Goles-Antwort muss 'ssl' => 'tls', oben hinzufügen, um Fehler zu vermeiden

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