PHP: ¿Cómo enviar mail desde localhost sin servidor smtp local?
De Foros del Web
Para este fin utilizamos la clase phpmailer combinada con una función que adaptamos para que esta función sea nuestra nueva función de envío de email y así no usar mail().
Debemos tomar en cuenta que se requiere la carpeta include que tiene las clases php mailer que las pueden bajar de aquí: http://phpmailer.sourceforge.net/
La función se encarga de llamar por require a las clases desde esta estructura que puede ser cambiada dependiendo a la carpeta donde este ubicado el script que usara esta funcion.
Código HTML:
Estructura ./includes ./includes/class.phpmailer.php ./enviarmail.php ./functionmail.php
La función se le debe editar el smtp host, usuario y password que deben ser una cuenta de smtp real.
Código PHP:
function SendMAIL($para,$subject,$body,$altbody,$mailFROM,$mailNameCompany){ require "includes/class.phpmailer.php"; $mail = new phpmailer(); $mail->PluginDir = "includes/"; $mail->Mailer = "smtp"; $mail->Host = "mail.servicioweb.net"; # Editar el Host smtp $mail->SMTPAuth = true; $mail->Username = "usuario"; # editar el usuario $mail->Password = "password"; # Editar el password $mail->From = $mailFROM; $mail->FromName = $mailNameCompany; $mail->Subject = $subject; $email = $para; $body = $body; $mail->Body = $body; $mail->AltBody = $altbody; $mail->Timeout=20; $mail->AddAddress($email); $exito = $mail->Send(); $intentos=1; while((!$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){ sleep(5); $exito = $mail->Send(); $intentos=$intentos+1; } if ($mail->ErrorInfo=="SMTP Error: Data not accepted") { $exito=true; } return $exito; }
Los valores que se le deben agregar son: SendMAIL($para,$subject,$body,$altbody,$mailFROM,$ mailNameCompany) $para = la persona a la que se le envia $subject = Titulo del email $body = Email con html $altbody = aqui el email pero en solo texto, es bueno llenar las dos opciones porque si el webmail que ve el email no acepta html podra ver el email en formato texto. $mailFROM = aqui el email de quien envia $mailNameCompany = aqui el nombre de la persona que envia o de la empresa.
Y para usarla sólo se emplea así, se le puede colocar un if para verificar si el envio se hizo correctamente:
Código PHP:
<?php $para = "cualquiera@hotmail.com"; $subject = "Mensaje de Prueba"; $body = "<font color=red>Hola esto es una prueba</font>"; $altbody = "Hola esto es un mensaje de prueba"; $mailNameCompany = "Mi Nombre"; if(SendMAIL($para,$subject,$body,$altbody,$mailFROM,$mailNameCompany)){ echo "Se envio correctamente"; } else{ echo "No se envio"; } ?>
--Dwaks 28 Abr 2005
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
