Me pareció interesante hacer este Tip para aquellos que quieran mandar mails de manera sencilla y rápida con la librería PHPMailer. La gran mayoría de personas que programan en PHP, utilizan la función mail() para realizar envíos, ya sean simples o complejos. Pero algunos servidores tienen bloqueada la función mail() de php por cuestiones de seguridad.
PHP Mailer es una librería escrita en php para envío de mails desde una web utilizando una cuenta válida de correo de un servidor de mails. Algunas de las funciones que trae son:
Descarga PHPMailer desde la web oficial en Worxware. Una vez descargada la librería, copia los archivos class.phpmailer.php y class.smtp.php al servidor. Crea un archivo php, por ejemplo: “Enviar.php” En el que escribiremos los siguiente:
Código :
<?php
require("class.phpmailer.php"); //Importamos la función PHP class.phpmailer
$mail = new PHPMailer();
Luego tenemos que iniciar la validación por SMTP:
$mail->IsSMTP();
$mail->SMTPAuth = true; // True para que verifique autentificación de la cuenta o de lo contrario False
$mail->Username = "remitente@dominio.com"; // Cuenta de e-mail
$mail->Password = "************"; // Password
$mail->Host = "localhost";
$mail->From = "remitente@dominio.com";
$mail->FromName = "Nombre a mostrar del Remitente";
$mail->Subject = "Asunto";
$mail->AddAddress("destinatario@dominio.com","Nombre a mostrar del Destinatario");
$mail->WordWrap = 50;
$body = "Hola, este es un…";
$body .= "<font color='red'> mensaje de prueba</font>";
$mail->Body = $body;
$mail->Send();
// Notificamos al usuario del estado del mensaje
if(!$mail->Send()){
echo "No se pudo enviar el Mensaje.";
}else{
echo "Mensaje enviado";
}
?>
Sube el archivo “Enviar.php” al servidor en la misma ubicación que los archivos class.phpmailer.php y class.smtp.php.
Notas:
PHPMailer tiene la posibilidad de enviar archivos adjuntos. Los mismos se pueden agregar de la siguiente forma:
El primer parámetro la ruta del archivo. El segundo, es el nombre del archivo a mostrar. También tenemos la posibilidad de agregar cuentas con CC o CCO, con las siguientes líneas:
Hola, gracias por el tuto, hay alguna posibilidad de tener reportes del envío? Por:mobiltech
Hola mobiltech! De nada, si con reportes de envío te refereis a que te llegue una copia del mail, no conozco la forma de hacerlo desde PHPMailer, pero podes probar agregando estas lineas luego del IF que indica al usuario si se envió correctamente el mail o no:
En esta linea modificamos el destinatario, reemplazando por tu direccion de email y volver a llamar al evento Send(), para que envíe el mismo mail a tu cuenta:
Código :
$mail->Send(); // Notificamos al usuario del estado del mensaje
if(!$mail->Send()){
echo "No se pudo enviar el reporte del envío.";
}else{
echo "Mensaje enviado";
}
Espero que eso sea lo que estabas buscando. Si tenes mas dudas postealas en el foro. Saludos! Por:nykos
Con reportes de envío se refiere a saber si el destinatario:
- Le llegó el mail o rebotó
- Abrió el mail
- Hizo click(s) en el mail.
Y esto no se hace con ninguna función de envío de mail, sino que en el mail que estás enviando.
Por ej... pones una imagen (que en realidad no es una imagen) y en el source pones tudominio.com/reportes/open_mail.php entonces si el usuario abrio el mail va a "llamar" a ese archivo, en el cual vos agregas qeu el mail con es ID se abrio (en la db).
Con eso vas contando las aperturas, despues para los clicks es similar, en vez de poner el vínculo común lo llevas a un php tuyo que loguee la acción y luego redirija al destino final.
Para los rebotes es algo más complejo porque creo que tenés que leer datos del servidor de mails.
Para probarlo podes incluso armarte un html y enviarlo desde cualquier cliente de correo.
PD: No se recomienda hacer envíos masivos desde un servidor no dedicado, ya que lo más probable es que te suspendan la cuenta, y además hay que tener mucho cuidado en la forma de enviar (y que se envía) para no caer en las blacklist´s. Por:Raxiro-blog
Me olvidé de algo importante, hoy en día los reportes no son tan confiables, muchos webmails e incluso los outlook/express lo hacen que te bloquean las imagenes, entonces no llega nunca la "llamada" a tu script PHP, si el usuario "habilita" las imágenes ahi sí.
Pero uno no puede asegurar 100% que sean efectivas las estadísticas de apertura. Por:Raxiro-blog
Raxiro muchisimas gracias por tu explicación, ha sido muy completa Por:mobiltech
hermano gracias por el aporte, justamente me rompi la cabeza hace unos dias con phpmailer Por:carnicero666-blog
lo malo es que al correo llega como spam Por:sebasxnco-blog
Clasico, super Clasico, felicitaciones muy buena guia para aquellos que aprenden PHP, y sobre todo para que sus envios de correo no sean usados por hackers Por:jpcw
Amigos mi trabajo implica mandar muchos emails de promociones cosa que no puedo hacer en un email gratuito porque tiene limites de envio, no tengo pagina web ni nada de nada solo mi email gratuito pero no me soluciona el problema ya que necesito mandar emails a bases de datos muy grandes ofrezco una aportacion economica (DINERO) al que me ayude a solucionar mis problemas escribanme a gecape00@yahoo.com (cero cero ok!!)alguien me menciono algo asi como una pagina web con mi propio servidor de emails o algo por el estilo pero no se como hacerlo. El que me guie paso a paso y con que programas,herramientas,etc.paso a paso y configurar todo y dejarlo listo y funcionando lo recompensare tienen mi palabra saludos. Por:Gerry-blog
Hola como esta, el manual ta muuuy bien no estaria mal por ahi un manual para cakephp con phpmailer le e buscado pero no e encontrado alguno que digas completo que te explique lo del controlador, vista y como hacerlo componet sale pues andamos en contacto Por:Obelich-blog
Obelich Cake suck man.. don´t use it!! Por:Pay-blog
¿Con php mailer se puede hacer que se envie un texto tomado de textarea a un correo determinado pero sin tener que usar una cuenta para el envio y que llegue al correo donde quiero que vaya ? Por:sebastiancb-blog
Alguien sabe como hacer un envio a 5000 usuarios con phpmailer si el servidor limita 20 emails por minuto?
si le pongo una pausa tarda mucho tiempo.
No se como hacer, alguna idea?
el envio puede ser una vez a 100 y otra a 400 y otra a los 5000...
no se que hacer sin contratar un servidor de correo claro..
desesperación... Por:horusnet
muchas gracias este post es muy bueno, encontré otro con una configuracion smtp pero no me sirvió este si a la primera. Por:jesuslandach-blog