Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/01/2011, 14:36
jesusjj
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 17 años, 2 meses
Puntos: 2
Todo tipo de problemas con PHPMailer

Buenas tardes:

Les comento brevemente.

Estoy intentando enviar un mail con la librería PHPMailer y 'sufro' toda clase de contratiempos.
  • En primer lugar, unas veces el mail llega sin mensaje y otras con mensaje.
  • Otro fallo, es que no siempre recoge las variables que le paso, como por ejemplo con el fichero adjunto, que lo envía bien, pero siempre como: 'NONAME'
  • Otra cosa que hace, es no validar el envío del mail, es decir, aunque siempre lo envíe, a su manera, lo envía, sin embargo, para PHPMailer siempre es !$respuesta, con lo que lo envía las veces indicadas en el 'while'.

Espero que alguien pueda echarme una mano.

Muchas gracias.

Saludos


Código PHP:
<?php
session_start
();

require_once(
'libs/phpmailer.inc.php');
require_once(
'constantes.php');

if(isset(
$_POST['f_contacto'])) { // comprobamos si se trata de la recepción del formulario
    
    // extraemos los valores del formulario
    
extract($_POST);
        
    
// recogemos el fichero en la variable   
    
$fichero $_FILES['imagen']['name'];
    
$fichero_1 $_FILES['imagen'];
    
    
$allowedExtensions = array("jpg""jpeg""gif""png""doc""pdf");
    
$tipo end(explode('.',$fichero));
        
    
// definimos la referencia
    
$referencia str_replace(' ','',$nombre).str_replace(' ','',$apellidos).'_'.date('Ymd').'_'.date('His');
    
    
//creamos nombre de la imagen
    
$n_imagen $referencia.'.'.$tipo;
    
    
$destino '../../../uploaded_files/'.$n_imagen;
    
    if(
in_array($tipo,$allowedExtensions)) {
        
// verificamos si se ha subido el fichero
        
if(is_uploaded_file($_FILES['imagen']['tmp_name'])){                            
            if(@
copy($_FILES['imagen']['tmp_name'],$destino)) {
                        
            
$mensaje .= '<b>FORMULARIO RECIBIDO</b><br>'
            
$mensaje .= '<b>Ref: '.$referencia.'</b><br>';
            
$mensaje .= 'Se ha recibido un formulario con la siguiente informaci&oacute;n:<br>';
            
$mensaje .= '<b>Nombre:</b> '.$nombre.'<br>';
            
$mensaje .= '<b>Apellidos:</b> '.$apellidos.'<br>';
            
$mensaje .= '<b>Tel&eacute;fono:</b> '.$tfno.'<br>';
            
$mensaje .= '<b>Mail:</b> '.$mailTo.'<br>';
            
$mensaje .= '<b>Nombre Fichero Original:</b> '.$fichero.'<br>';
            
$mensaje .= '<b>Nombre Fichero:</b> '.$n_imagen.'<br>';
            
$mensaje .= '<b>Ruta Imagen: </b>'.$destino.'<br>';
            
$mensaje .= '<b>Mensaje:</b> '.$f_mensaje;
            
            
$mail = new phpmailer();                                                      // se instancia la clase, para crear el mail
            
$mail->Mailer 'mail';
            
$mail->From '[email protected]';                                            // dirección de envío
            
$mail->FromName 'Nombre';                                                   // nombre del remitente
            
$mail->Sender $mailTo;
            
$mail->Timeout 120;                                                         // se ajusta el timeout a 120
            
if($imagen != 'none') {
                
$mail->AddAttachment($destino$n_imagen);                                // añadimos el archivo adjunto               
            
}    
            
$mail->AddAddress('[email protected]');                                       // dirección de destino
            
$mail->Subject 'Solcitud de información web - Ref: '.utf8_decode($referencia);         // asunto del mail
            
$mail->Body $mensaje;                                                       // mensaje HTML
            
$mail->WordWrap 50;
            
$mail->IsHTML(true);
            
$respuesta $mail->Send();                                                   // envío del mail    

            
$intentos 0;                                                                // contador de intentos
            
            
while((!$respuesta) && ($intentos 5)) {
                
sleep(5);
                
$exito $mail->Send();
                
$intentos $intentos 1;
            }

            
            if(!
$respuesta) {
                echo 
"<p>No se ha podido enviar el mail, int&eacute;ntelo de nuevo m&aacute;s tarde.</p>";
                echo 
"<p>Muchas Gracias</p>";                
            
            }else{
                echo 
"<p>El mail se ha enviado correctamente</p>";
                echo 
"<p>Muchas Gracias</p>";
            }

        }else{
            echo 
"Error al crear el fichero";
        }      
        
        }else{
          echo 
'Error al subir el fichero';  
        
        }
        
    }else{
        echo 
'<p>Archivo no permitido. Los tipos de archivo permitidos son:</p>';
        echo 
'<p>jpg - jpeg - gif - png - doc - pdf</p>';
        
    }

}else{
    echo 
"Ha ocurrido un error al enviar el mail. Reint&eacute;ntelo de nuevo m&aacute;s tarde.";    
}

?>