En principio, por eso mismo me decidí a utilizar la librería, por seguridad, pero no sé si por los servidores de prueba, o por el código, o incluso por errores de incompatibilidad en el mismo PHPMailer, no hay forma de estabilizarla.
Como servidores para pruebas utilizo, en local, WAMP; y en la Red, 1and1.es.
El código ahora se encuentra de la siguiente manera:
Código PHP:
Ver original<?php
require_once('libs/phpmailer.inc.php');
require_once('constantes.php');
echo "1.<br>";
if(isset($_POST['f_contacto'])) { // comprobamos si se trata de la recepción del formulario echo "2.<br>";
$nombre = $_POST['nombre'];
$apellidos = $_POST['apellidos'];
$tfno = $_POST['tfno'];
$mailTo = $_POST['mailTo'];
$f_mensaje = $_POST['f_mensaje'];
$imSize = $_POST['MAX_FILE_SIZE'];
// recogemos el fichero en la variable
$fichero = $_FILES['imagen']['name'];
$fichero_1 = $_FILES['imagen'];
$fichero_pre = $fichero_1 ['tmp_name'];
$allowedExtensions = array("jpg", "jpeg", "gif", "png", "doc", "pdf");
// definimos la referencia
//creamos nombre de la imagen
$n_imagen = $referencia.'.'.$tipo;
$destino = '../../../uploaded_files/'.$n_imagen;
if(in_array($tipo,$allowedExtensions)) { echo "3.<br>";
if(is_uploaded_file($_FILES['imagen']['tmp_name'])){ // verificamos si se ha subido el fichero echo "4.<br>";
if($_FILES['imagen']['size'] > $imSize) {
echo "4b.<br>";
echo "El tamaño supera el máximo permitido de 3MB";
}else{
if(@copy($_FILES['imagen']['tmp_name'],$destino)) { echo "5.<br>";
$mensaje = '<b>FORMULARIO RECIBIDO</b><br>';
$mensaje .= '<b>Ref: '.$referencia.'</b><br>';
$mensaje .= 'Se ha recibido un formulario con la siguiente información:<br>';
$mensaje .= '<b>Nombre:</b> '.$nombre.'<br>';
$mensaje .= '<b>Apellidos:</b> '.$apellidos.'<br>';
$mensaje .= '<b>Telé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;
echo $mensaje;
$intentos = 0; // contador de intentos
$mail = new phpmailer(); // se instancia la clase, para crear el mail
$mail->Plugindir = 'libs/'; // definimos el plugin smtp
$mail->Mailer = 'mail';
$mail->FromName = 'Nombre'; // nombre del remitente
$mail->Sender = $mailTo;
$mail->Timeout = 120; // se ajusta el timeout a 120
if($fichero != 'none') {
$mail->AddAttachment($destino);//, $n_imagen); // añadimos el archivo adjunto
}
$mail->Subject = 'Solcitud de información web - Ref: '.utf8_decode($referencia); // asunto del mail $mail->Body = $mensaje; // mensaje HTML
$mail->IsHTML(true);
$respuesta = $mail->Send(); // envío del mail
// while((!$exito) && ($intentos < 5)) {
// sleep(5);
// $exito = $mail->Send();
// $intentos = $intentos + 1;
// }
if(!$respuesta) {
echo "<p>No se ha podido enviar el mail, inténtelo de nuevo má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 "6.<br>";
echo "Error al crear el fichero";
}
}
}else{
echo "7.<br>";
echo 'Error al subir el fichero';
}
}else{
echo "8.<br>";
echo '<p>Archivo no permitido. Los tipos de archivo permitidos son:</p>';
echo '<p>jpg - jpeg - gif - png - doc - pdf</p>';
}
}else{
echo "9.<br>";
echo "Ha ocurrido un error al enviar el mail. Reinténtelo de nuevo más tarde.";
}
?>
Para el smtp he desisitido por los problemas de conexión con el socket y eso que utilizo gmail.
Muchas gracias de nuevo