Tema: FAQ's de PHP
Ver Mensaje Individual
  #144 (permalink)  
Antiguo 28/04/2005, 15:50
Avatar de dwaks
dwaks
 
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
De acuerdo Como enviar mail desde localhost sin servidor smtp local

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.

Última edición por dwaks; 07/05/2005 a las 10:33