php - framework - zend mail example
¿Problema al enviar correo con Zend Mail? (4)
Otra gran cosa en Zend_Mail es que es encadenable, así que puedes hacer esto:
$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();
No estoy seguro si ''encadenable'' es la palabra correcta, pero espero que entiendas el punto. Esto es solo un consejo gratis. La respuesta es dada (derecha) por Benjamin
Intento enviar un correo electrónico con ZendMail (este sencillo script lo resume)
<?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();
?>
Sin embargo, obtengo este rastro de pila:
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
EDITAR:
No estoy tratando de usar SMTP para enviar mi correo electrónico y estoy teniendo un problema menos horrible, pero sigue siendo un problema.
<?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);
?>
Este tiro es este error, realmente no entiendo por qué:
Fatal error: Class ''Zend_Mail_Transport_Smtp'' not found in /var/www/hexreaction/mail/index3.php on line 7
EDICION 2:
Este es mi código de trabajo final
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);
Además, si desea desplegar el correo en magento con el archivo adjunto, eche un vistazo al siguiente fragmento
$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;
}
La respuesta actualizada de Goles necesita agregar ''ssl'' => ''tls'', en la parte superior para evitar errores
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);
Como puede ver en el seguimiento de Stack, Zend_Mail
usa Zend_Mail_Transport_Sendmail
como adaptador de transporte.
Así que asegúrese de que se esté ejecutando un MTA compatible con sendmail (por ejemplo, Postfix) en su sistema.
Como alternativa, puede usar el adaptador de transporte Zend_Mail_Transport_Smtp y usar un servidor SMTP externo como tal
$tr = new Zend_Mail_Transport_Smtp(''mail.example.com'', array(
''auth'' => ''login'',
''username'' => $username,
''password'' => $password,
''port'' => $port,
));
Zend_Mail::setDefaultTransport($tr);
Editar: Para su segundo problema: a
require_once(''Zend/Mail/Transport/Smtp.php'');
debería ayudar.