lunes, 13 de abril de 2009

PHP: Enviar email mediante SMTP con Autentificacion usando librerias de Zend Framework

El desarrollo de aplicaciones que permitan el envio de email hacia determinado servidor es muy comun para las diferentes aplicaciones. Bien pueden ser usadas para el envio de boletines electrónicos, logs del sistema, notificaciones y mensajes a usuarios.

Para mayor seguridad de nuestro servidor de correo en la mayoria de los casos es activada la opcion de requerir autentificación. Lo anterior es un problema si intentamos enviar mensajes de correo electrónico por la común opcion de mail() en php.

A continuación les muestro un ejemplo utilizando las librarias del Zend Framework. Una de las ventajas de este framework es que podemos utilizar sus clases independientes sin tener que hacer uso completamente del framework y de toda su estructura MVC que es muy util por cierto, pero para aquellos que aun no se adaptan, aqui el ejemplo :

Primeramente cree una clase : sendemail.php

include("Zend/Mail.php");
include("Zend/Mail/Transport/Smtp.php");

class sendEmail{

private $addTo;

/**
* Nombre de destino
*
* @var string
*/
private $nameTo;

/**
* Titulo del email
*
* @var string
*/
private $subject;

/**
* Cuerpo del mensaje
*
* @var string
*/
private $body;

/**
* Enviar email
*
* @param string $addTo
* @param string $nameTo
* @param string $subject
* @param string $body
*/
public function sendDetails($addTo, $nameTo, $subject, $body){

$config = array('auth' => 'login',
'username' => 'USUARIO',
'password' => 'CLAVE');

$transport = new Zend_Mail_Transport_Smtp('HOST', $config);

$mail = new Zend_Mail();
$mail->setBodyText($body);
$mail->setFrom('EMAIL-DE', 'NOMBRE');
$mail->addTo($addTo, $nameTo);
$mail->setSubject($subject);
$mail->send($transport);

}
}
?>

Se debe editar previamente nuestro:
HOST: nombre del servidor SMTP
USUARIO: Nombre del usuario para conectar al servidor SMTP
CLAVE: Clave del usuario para conectar al servidor SMTP
NOMBRE: Nombre que aparecera en el correo
EMAIL-DE: Email que aparecera al usuario, de donde proviene el correo.

La usamos de la siguiente forma index.php

include("sendemail.php");

$email = new sendEmail();
$email->sendDetails($addTo, $nameTo, $subject, $body);
?>

Donde:
$addTo: Email del destinarario.
$nameTo: Nombre del destinatario
$subject: Asunto del mensaje
$body: Cuerpo del mensaje.

Espero les sea de gran utilidad.

No hay comentarios: