PHPMailer, Enviando correos dese PHP

PHPMailer es una clase escrita en PHP que facilita el envío de correo, añadiendo facilidad en el envío de correos con adjuntos, en formato HTML y con diferentes codificaciones, soporte para imágenes embebidas, headers personalizados y además funciona con múltiples servidores de correo.

Típicamente para el envío de correo con PHP se utiliza la función mail(), pero esta función tiene varias limitaciones, por ejemplo que no soporta el envío de adjuntos. Entonces PHPMailer nos viene a facilitar este trabajo que de otra forma seria muy engorroso. Viene con un conjunto de métodos que nos ayudarán en el envió de emails.

Empezando

El primer paso es descargar PHPMailer, aquí encontraremos dos archivos: class.phpmailer.php el cual contiene las funciones para el envío de correo y class.smtp.php para enviar correo mediante servidores SMTP.

Creamos un nuevo documento PHP en donde incluimos la clase y luego creamos una instancia de la clase para utilizarla mas adelante.

require("class.phpmailer.php");

$mail = new PHPMailer();

Propiedades del Mensaje

El siguiente paso es asignar las propiedades del correo que vamos a enviar como el servidor de correo, subject y From. Luego con el método AddAddress asignamos a quien o quienes vamos a enviar el correo, también se puede utilizar AddCC y AddBCC para las copias y copias ocultas:

$mail->Host = "localhost";
$mail->From = "[email protected]";
$mail->FromName = "Nombre del Remitente";
$mail->Subject = "Subject del correo";
$mail->AddAddress("[email protected]","Nombre 01");
$mail->AddAddress("[email protected]","Nombre 02");
$mail->AddCC("[email protected]");
$mail->AddBCC("[email protected]");

 

Si deseamos hacer envió a mas de un destinatario entonces entremos que enviarlos dentro de una array.

Agregar Archivos Adjuntos

$mail->AddAttachment("images/foto.jpg", "foto.jpg");
$mail->AddAttachment("files/demo.zip", "demo.zip");

 

Y finalmente enviamos el email con

$mail->Send();

 

para saber si el correo fue enviado podemos agregar lo siguiente:

if($mail->Send();){
	echo "Enviado";
} else {
	echo "Error no se envio";
}

 

Este es otro TIP para la validación del formato de un correo, con funciones nativas de PHP.

En este ejemplo estamos recorriendo las direcciones de los correos a los cuales les enviaremos el correo, pero para evitar errores dentro de la librería PHPMailer y evitar que se detenga el proceso de los envíos, simplemente validamos el formato (esta misma validación la realiza la librería, con la diferencia que nos manda un error de dirección invalida y detiene el proceso).

También se puede usar este código para ir depurando nuestros emails y eliminar o hacer lo que mejor nos parezca con los que no tienen un formato valido.

 foreach ($mails as $mail) {
                    if (filter_var($mail->email, FILTER_VALIDATE_EMAIL)) {
                        $this->_PHPMailer->AddBCC($mail->email, $mail->nombre);
                    } else {
                        Flash::error("email no valido: {$mail->email}");
                    }
                }

Repositorio

Leave a Reply

Your email address will not be published. Required fields are marked *