Comunidad de diseño web y desarrollo en internet online

Problemas con phpmailer

Citar            
MensajeEscrito el 08 Abr 2009 09:34 am
Hola a todos:

El problema que tengo es que estoy intentando enviar correos con la clase phpmailer, pero los envia cuando quiere. Hice un $mail->ErrorInfo y el error que me da es: "Mailer error: SMTP Error: The following recipients failed [[email protected]]"

Estuve mirando en google y lo que encontré es que podía dar ese fallo porque el servidor no estaba configurado para enviar por SMTP, pero en mi caso, si fuera de eso, no enviaría correos nunca, y a mi si que me los envía, lo que pasa es que los envia cuando quiere, a lo mejor le das 5 veces a enviar y no envía, y después de 20 minutos le vuelves a dar y envía, y pruebas más tarde y ya no funciona.

Probé poniendo distintas cuentas de correo a las que enviar el email (cuentas fuera y dentro del dominio) y nada, no funciona.

Mi código es el siguiente:

Código :

if($ok)
{
    require("includes/class.phpmailer.php");
    $mail = new phpmailer();
         
    $mail->PluginDir = "includes/";
    $mail->IsSMTP();
    $mail->Host = "localhost";
    $mail->SMTPAuth = false;
    $mail->From = $email;
    $mail->FromName = "Prueba.com";
    $mail->Subject = "Consultas";
    $mail->AddAddress("[email protected]", "Mi Nombre");
    $mail->IsHTML(true);

    $cuerpo = "<html><head></head><body style='font-family:Arial, Helvetica,    sans-serif; font-size:0.8em; text-align:justify'>";
   $cuerpo.= "<p>Te han enviado el siguiente E-Mail de Contacto:</p>";
   $cuerpo.= "<p><span style='font-weight: bold'>Nombre: $nombre</span></p>";
   $cuerpo.= "</body></html>";

   $mail->Body = $cuerpo;
   $mail->AltBody = $cuerpo;
   $enviado = $mail->Send();

   if($enviado) echo "Mensaje enviado con exito";
   else echo "No se pudo enviar el correo";
}


Alguien podría ayudarme???? :(

Por naiara

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Abr 2009 12:09 pm
Si tu servidor requiere que autentiques el envío no lo enviara, ese error es propio ya que al no detectar una dirección que autentique dicho envío intenta utilizar la dirección de destino y evidentemente no la hallara es por eso que devuelve dicho mensaje.
Autenticar un envío se refiere a indicarle al servidor que estamos intentando enviar un correo por medio de un servidor SMTP por lo cual se le debe indicar el nombre de dicho servidor, un usuario y una contraseña. Este usuario corresponde a una cuenta de correo que se encuentre en el servidor SMTP, la cual tranquilamente no debe ser del mismo dominio desde el cual estas intentando procesar el archivo, por ejemplo si tienes un dominio www.midominio.com y intentas enviar un correo con phpmailer no necesariamente el servidor SMTP debe ser smpt.midominio.com, podría ser también smtp.gmail.google.com y como usuario tu cuenta de correo en gmail. El envío mediante SMTP permite asegurar que tu correo esta siendo enviado de una dirección correcta y que no es un SPAM.

Hace tiempo desarrolle una función para enviar mails que utilizo en todos mis proyectos:

Código :

function Enviar_Mail($Remitente, $Destinatario, $Asunto, $Contenido, $Adjunto, $CC, $CCO){
   require('URL del Archivo phpmailer');
   
   $Remitente = explode('|', $Remitente);
   $Destino = explode( ';', $Destinatario);
   $Copia = explode( ';', $CC);
   $Copia_Oculta = explode( ';', $CCO);   
   
   $E_Mail = new PHPMailer();
   $E_Mail ->From = $Remitente[0];
   $E_Mail ->FromName = $Remitente[1];
   
   foreach($Destino as $Para) {
      $E_Mail ->AddAddress($Para);
   }
   
   if($CC != ''){
      foreach($Copia as $Para) {
         $E_Mail ->AddCC($Para);
      }
   }
   
   if($CCO != ''){
      foreach($Copia_Oculta as $Para) {
         $E_Mail ->AddBCC($Para);
      }
   }
   
   $E_Mail ->Subject = $Asunto;
   $E_Mail ->IsHTML(true);   
   $E_Mail ->MsgHTML($Contenido);   
   $E_Mail ->Mailer = 'smtp';   
   $E_Mail ->Host = 'smpt.nombredelservidor.com'; // Intenta con localhost si algo no funcionara   
   $E_Mail ->SMTPAuth = true;   
   $E_Mail ->Username = '[email protected]'; // Cualquier dirección de correo que se encuentre en el servidor SMTP
   $E_Mail ->Password = 'tucontraseña';
   $E_Mail ->Timeout = 30;
   
   if($Adjunto != ''){
       $E_Mail ->AddAttachment($Adjunto);
   }   
   
   $Envio = $E_Mail ->Send();   
   $Intentos = 1;
   
   while((!$Envio) && ($Intentos < 5)){
      sleep(5);
        $Envio = $E_Mail ->Send();
        $Intentos += 1;   
   } 
      
   if($Envio == 'true'){
      $Salida = true;      
   }
   else{
      $Salida = $E_Mail->ErrorInfo;
   } 

   return $Salida;
}


Espero que te sirva Saludos!! :)

Por Zis

Claber

314 de clabLevel

1 tutorial

Genero:Masculino  

Bell Ville - Cordoba - Argentina

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.