Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/10/2008, 11:04
Avatar de Mono-R
Mono-R
 
Fecha de Ingreso: abril-2006
Ubicación: Bs. As. Argentina
Mensajes: 155
Antigüedad: 18 años
Puntos: 1
Pregunta PHPMailer envía pero no recibo el mail!

Hola gente… estoy utilizando la clase PHPMailer, para el envío de mails por SMTP.
Esto lo tuve que implementar ya que en el servidor donde esta el sitio para el cual es el formulario que la utiliza, no funciono jamás con la funcion mail() de PHP.
Ahora bien, en mi hosting hice la prueba y luego de algunos errores puede hacerlo funcionar. Ahora bien, en el servidor en donde alojo el sitio con problemas el mismo código también dio errores al principio hasta que logre corrigiendo algunos parámetros que me de el mensaje de “éxito”
Hasta donde entiendo, si el mensaje es positivo, se supone que la conexión con el SMTP fue exitosa y el posterior envío del mail se realiza, a diferencia de la funcion mal() que solo nos informa si el mail fue enviado al SMTP.
Les dejo el código por si acaso:
Pero les recuerdo que en mi hosting comercial me funciona perfectamente, así que el problema esta en la configuración del SMTP del servidor en cuestión, supongo!

Desde ya muchas gracias a quien pueda darme una mano!!!

codigo PHP
Código php:
Ver original
  1. <?php
  2.   // para que no corte a los 30 segundos y muestre el verdadero error
  3.  
  4.   // primero hay que incluir la clase phpmailer para poder instanciar
  5.   //un objeto de la misma
  6.   include_once('includes/class.phpmailer.php');
  7.  
  8.   //instanciamos un objeto de la clase phpmailer al que llamamos
  9.   //por ejemplo mail
  10.   $mail = new phpmailer();
  11.  
  12.   //Definimos las propiedades y llamamos a los métodos
  13.   //correspondientes del objeto mail
  14.  
  15.   //para que muestre los errores en español
  16.   //$mail->SetLanguage("es", "includes/");
  17.    
  18.   //Con PluginDir le indicamos a la clase phpmailer donde se
  19.   //encuentra la clase smtp que como he comentado al principio de
  20.   //este ejemplo va a estar en el subdirectorio includes
  21.   $mail->PluginDir = "includes/";
  22.  
  23.   //Con la propiedad Mailer le indicamos que vamos a usar un
  24.   //servidor smtp
  25.   $mail->Mailer = "smtp";
  26.  
  27.   //Indicamos el puerto que sera diferente al 25
  28.   $mail->Port = "1025";  
  29.  
  30.   //Asignamos a Host el nombre de nuestro servidor smtp
  31.   $mail->Host = "IPdelsmtp";
  32.  
  33.   //Le indicamos que el servidor smtp requiere autenticación
  34.   //$mail->SMTPAuth = true;
  35.  
  36.   //Le decimos cual es nuestro nombre de usuario y password
  37.   //$mail->Username = "infoserver";
  38.   //$mail->Password = "xxxxxx";
  39.  
  40.   //declaro las variables From y FromName
  41.   $emailfrom=$_POST["mail"];
  42.   $nombrefrom=$_POST["nombre"];
  43.  
  44.   //Indicamos cual es nuestra dirección de correo y el nombre que
  45.   //queremos que vea el usuario que lee nuestro correo
  46.   $mail->From = $emailfrom;
  47.   $mail->FromName = $nombrefrom;
  48.  
  49.   //el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar
  50.   //una cuenta gratuita, por tanto lo pongo a 30  
  51.   $mail->Timeout=30;
  52.  
  53.   //Indicamos cual es la dirección de destino del correo
  54.   $mail->AddAddress("info@mailserver");
  55.  
  56.   //cambiamos el formato de fecha y hora al español
  57.     $nommes = array(Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre);
  58.     $nomdia = array(Domingo, Lunes, Martes, Miercoles, Jueves, Viernes, Sabado);
  59.     $dia = date(j); //Dia del mes en numero
  60.     $mes = date(n); //Mes actual en numero
  61.     $diasemana = date(w); //Dia de semana en numero
  62.     $fecha = $nomdia[$diasemana].' '.$dia.' de '.$nommes[$mes-1].' de '.date(Y).', hora '.date(h).':'.date(i).' '.date(a).' de la Argentina.';
  63.  
  64.   //Asignamos asunto y cuerpo del mensaje
  65.   //El cuerpo del mensaje lo ponemos en formato html, haciendo
  66.   //que se vea en negrita
  67.   $mail->Subject = "Desde el Sitio";
  68.   $mail->Body = "<b>** Formulario Web **</b></br></br>
  69.    ESCRIBIO: <b>" .$_POST["nombre"]."</b></br>
  70.     EMPRESA: " .$_POST["empresa"]."</br>
  71.     CARGO: " .$_POST["cargo"]."</br>
  72.     PAIS: " .$_POST["pais"]."</br>
  73.     TELEFONO: " .$_POST["telefono"]."</br>
  74.     E-MAIL: " .$_POST["mail"]."</br></br>
  75.     CONSULTA: " .$_POST["comentarios"]."</br></br>
  76.     ** Mensaje enviado el ".$fecha." **.</br>
  77.     ** El remitente accedio al formulario desde el sitio en ".$_POST["idioma"]." **.</br>";
  78.  
  79.   //asignamos el tipo de caracteres que soportara el cuerpo del mail  
  80.   $mail->CharSet = "UTF-8";
  81.   //$mail->Body = utf8_decode();
  82.  
  83.   //Definimos AltBody por si el destinatario del correo no admite email con formato html
  84.   $mail->AltBody = "** FORMULARIO WEB **"."\n\n
  85.  ESCRIBIO: " .$_POST["nombre"]."\n
  86.  EMPRESA: " .$_POST["empresa"]."\n
  87.  CARGO: " .$_POST["cargo"]."\n
  88.  PAIS: " .$_POST["pais"]."\n
  89.  TELEFONO: " .$_POST["telefono"]."\n
  90.  E-MAIL: " .$_POST["mail"]."\n\n
  91.  CONSULTA: " .$_POST["comentarios"]."\n\n\n\n
  92.  ** Mensaje enviado el ".$fecha." **"."\n
  93.  ** El remitente accedio al formulario desde el sitio en ".$_POST["idioma"].". **"."\n";
  94.  
  95.   //se envia el mensaje, si no ha habido problemas
  96.   //la variable $exito tendra el valor true
  97.   $exito = $mail->Send();
  98.  
  99.   //Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho
  100.   //para intentar enviar el mensaje, cada intento se hara 5 segundos despues
  101.   //del anterior, para ello se usa la funcion sleep
  102.   $intentos=1;
  103.   while ((!$exito) && ($intentos < 5)) {
  104.     sleep(5);
  105.         //echo $mail->ErrorInfo;
  106.         $exito = $mail->Send();
  107.         $intentos=$intentos+1; 
  108.    
  109.    }
  110.  
  111.        
  112.    if(!$exito)
  113.    {
  114.     echo "Problemas enviando correo electrónico a ".$valor;
  115.     echo "<br/>".$mail->ErrorInfo; 
  116.    }
  117.    else
  118.    {
  119.     echo "Mensaje enviado correctamente!!!";
  120.     echo "&estatus=ok&";
  121.    }
  122. ?>
__________________
:-) ... cuanto más intento aprender descubro lo poco que se ... :pensando:

Última edición por GatorV; 08/10/2008 a las 11:26