Foros del Web » Programando para Internet » PHP »

Problema para adjuntar ficheros en correo con PHPMailer

Estas en el tema de Problema para adjuntar ficheros en correo con PHPMailer en el foro de PHP en Foros del Web. Tengo una aplicación que, en determinado momento, permite enviar un correo, adjuntando, a su vez, varios ficheros. Desde la interfaz en la que se produce ...
  #1 (permalink)  
Antiguo 16/10/2008, 05:54
 
Fecha de Ingreso: octubre-2008
Mensajes: 6
Antigüedad: 15 años, 5 meses
Puntos: 0
Problema para adjuntar ficheros en correo con PHPMailer

Tengo una aplicación que, en determinado momento, permite enviar un correo, adjuntando, a su vez, varios ficheros. Desde la interfaz en la que se produce el envío del correo, tengo añadido el envío de los ficheros. Ayer estuvo funcionando perfectamente, pero hoy he querido hacer unas modificaciones y, sin saber qué he tocado, ya no sube los ficheros al servidor. He comprobado que la ruta de destino exista y sea correcta. Asimismo, me he asegurado de que la carpeta tiene los permisos correctos. Pero sigo sin saber qué puede estar mal. Dejo mi código, para ver si podéis decirme algo. Gracias.

Cita:
<?php
//Variable que controlará si se han copiado correctamente los adjuntos al directorio correcto del servidor.
$copia= TRUE;

//Directorio de destino de los ficheros.
$dir_destino="upload/";

//Tamaño máximo de los ficheros.
$MAX_SIZE = 500000;

//Tipos y Extensiones permitidas para los archivos.
$FILE_MIMES = array('image/jpeg','image/jpg','image/gif'
,'image/png','application/msword','application/pdf'
,'application/mspowerpoint','application/x-gzip','application/x-gtar'
,'application/x-tar');

//Nombres de extensiones permitidas.
$FILE_EXTS = array('.zip','.jpg','.png','.gif','.doc','.pdf','. pps'
,'.ppt','.gz','.gzip','gtar','.tar');

//Permite borrado de ficheros.
$DELETABLE = true;

(...)

// primero hay que incluir la clase phpmailer para poder instanciar
//un objeto de la misma
require ("includes/class.phpmailer.php");

//instanciamos un objeto de la clase phpmailer al que llamamos
//por ejemplo mail
$mail = new phpmailer();
$mail->IsSMTP();

//Definimos las propiedades y llamamos a los métodos
//correspondientes del objeto mail

//Con PluginDir le indicamos a la clase phpmailer donde se
//encuentra la clase smtp que como he comentado al principio de
//este ejemplo va a estar en el subdirectorio includes
$mail->PluginDir = "includes/";

//Con la propiedad Mailer le indicamos que vamos a usar un
//servidor smtp
$mail->Mailer = "smtp";

//Asignamos a Host el nombre de nuestro servidor smtp
$mail->Host = 'smtp.xxxxxxxxx.xx';
$mail->Port = 25;

//Le indicamos que el servidor smtp requiere autenticación
$mail->SMTPAuth = true;
//$mail->SMTPSecure = "ssl"; // sets the prefix to the servier

//Le decimos cual es nuestro nombre de usuario y password
$mail->Username = "XXXXXXXXX";
$mail->Password = "xxxxxxx";

//Indicamos cual es nuestra dirección de correo y el nombre que
//queremos que vea el usuario que lee nuestro correo
$mail->From = "[email protected]";
$mail->FromName = "xxxxxxxxxxxxxxxxxxxxxxx";

//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar
//una cuenta gratuita, por tanto lo pongo a 30
$mail->Timeout=60;

//Indicamos cual es la dirección de destino del correo
$mail->AddAddress("[email protected]");

//Se define el cuerpo del mensaje que aparece en pantalla, una vez se ha realizado la inserción
//de I/P/C/B. Posteriormente, se envía al remitente un correo con la información que se ha
//suministrado en la página de envío.
$mensaje="<h1 align=\"center\">GRACIAS</h1><br /><h2>Su ".' '.$tipo." será atendida a la mayor brevedad</h2>";
$mensaje.="<br /><br /><br /><br />";
$mensaje.="<h3 color=\"red\">Este es un mensaje generado automáticamente por el sistema</h3><br /></h3>";
$mensaje.="<h3 color=\"red\">En breve, recibirá un correo con la confirmación de su ".' '.$tipo."</h3><br />";
$mensaje.="<p> <div align=\"right\">Agradeciendo su confianza, reciba un cordial saludo.<br />";
$mensaje.="<br /><br />".$enlace;
echo $mensaje;

//Asignamos asunto y cuerpo del mensaje
//El cuerpo del mensaje lo ponemos en formato html, haciendo
//que se vea en negrita
$mail->Subject = "Nueva ".$tipo." recibida. Servicio: ".$_SESSION['user'];
$mail->Body = $plantilla;

//Definimos AltBody por si el destinatario del correo no admite email con formato html
$mail->AltBody = "Mensaje de prueba mandado con phpmailer en formato solo texto";

//se envia el mensaje, si no ha habido problemas
//la variable $exito tendra el valor true
$exito = $mail->Send();

//Si el mensaje no ha podido ser enviado se realizaran 2 intentos mas como mucho
//para intentar enviar el mensaje, cada intento se hara 5 segundos despues
//del anterior, para ello se usa la funcion sleep
$intentos=3;
while ((!$exito) && ($intentos < 1)) {
sleep(5);
$intentos=$intentos+1;

}


if(!$exito)
{
echo "Problemas enviando correo electrónico a ".$valor;
echo "<br>".$mail->ErrorInfo;
}
else
{
echo "Mensaje enviado correctamente";
//Se usará, por defecto, la carpeta UPLOADS existente en el directorio PHP
//dentro del servidor web.
//Se comprueba si se ha introducido información en los cuadros de texto.
for ($i=0;$i<3;$i++){
if ($HTTP_POST_FILES['ufile']['name'][$i]!="")
{
//Se indica la ruta final donde se copiarán los objetos en el servidor.
$path= $dir_destino.$HTTP_POST_FILES['ufile']['name'][$i];
echo $path;

//Instrucción de copiado de ficheros.
//copy($HTTP_POST_FILES['ufile']['tmp_name'][$i], $path);
$res=move_uploaded_file($HTTP_POST_FILES['ufile']['tmp_name'][$i], $path);
echo $res;
}
}
//-------------------------------------------------------------------------
// -
// Comprobamos que no se ha producido ningún error al subir los ficheros -
// -
//-------------------------------------------------------------------------

$filesize1=$HTTP_POST_FILES['ufile']['size'][0];
$filesize2=$HTTP_POST_FILES['ufile']['size'][1];
$filesize3=$HTTP_POST_FILES['ufile']['size'][2];

for ($i=0;$i<3;$i++)
{
if($HTTP_POST_FILES['ufile']['name'][$i]!="" && $HTTP_POST_FILES['ufile']['size'][$i] != 0)
{
echo "ERROR -201: no se han recibido correctamente los ficheros";
}
}

}//Del else que controla si se ha realizado el envío correctamente.
?>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:45.