Para este fin utilizamos la clase phpmailer combinada con una funcion que adaptamos para que esta funcion sea nuestra nueva funcion de envio de email y asi no usar mail().
Debemos tomar en cuenta que se requiere la carpeta include que tiene las clases php mailer que las pueden bajar de aqui:
http://phpmailer.sourceforge.net/
La funcion 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 funcion 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 solo se emplea asi, se le puede colocar un if para verificar si el envio se hizo correctamente:
Código PHP:
<?php
$para = "[email protected]";
$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";
}
?>
Saludos,
By dwaks.