Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/07/2006, 10:05
Avatar de susaninhax
susaninhax
 
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 19 años, 5 meses
Puntos: 3
Enviar Archivo Adjunto Desde Formulario

Buenas compañeros;

Tengo un problemilla a la hora de adjuntar un archivo en un formulario y enviar todos los datos y el archivo adjunto por email.
Los datos me llegan perfectamente excepto el archivo adjunto.

Os adjunto mi código para que le echéis un ojo, y si alguien me puede ayudar con el tema del archivo adjunto. Os lo documento :

Código PHP:
//Es necesario que al menos halla una dirección de destino
   
$error="";

 
//aquí tendré que hacer la consulta para sacar el email del usuario para enviarle el fichero aceites vegetales.xsl
    
$usuario="[email protected]";
 
    
//En vez de dos direcciones pongo directamente la que me interesa
     
$direcciones="$usuario ";//$usuario
    
      //pasamos a enviar el correo

      // 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();

      
//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 "mail.aclass.es"
      
      
//Le indicamos que el servidor smtp requiere autenticación
      
$mail->SMTPAuth true;

      
//Le decimos cual es nuestro nombre de usuario y password
      
$mail->Username "[email protected]"//username= [email protected]
      
$mail->Password "123456";                   //contraseña de mi correo outlook
      
      //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]"//[email protected]

      
$mail->FromName "Svenson";

      
//Asignamos asunto y cuerpo del mensaje
      //El cuerpo del mensaje lo ponemos en formato html, haciendo 
      //que se vea en negrita
      
$mail->Subject "Solicitud de Empleo";
      
$mail->Body "<b>Estimado señores;</b><br><br> Deseo formar parte Svenson. Les adjunto mis datos personales y mi curriculum. Gustosamente espero vuestras noticias al respecto. Muchas gracias.
        Nombre: <b>"
.$_POST["nombre"]."</b><br>
        
        Apellidos: <b>"
.$_POST["apellidos"]."</b><br>
                
        Telefono: <b>"
.$_POST["telf"]."</b><br>
        
        E-mail: <b>"
.$_POST["email"]."</b><br>
        
        Dirección: <b>"
.$_POST["direccion"]."</b><br>
        
        Poblacion: <b>"
.$_POST["poblacion"]."</b><br>
        
        Codigo Postal: <b>"
.$_POST["cp"]."</b><br>

        Provincia: <b>"
.$_POST["prov"]."</b><br>
        
        Comentarios: <b>"
.$_POST["comen"]."</b><br>";

      
//Definimos AltBody por si el destinatario del correo no admite 
      //email con formato html
      
$mail->AltBody ="<b>Estimado señores;</b><br><br> Deseo formar parte Svenson. Les adjunto mis datos personales y mi curriculum. Gustosamente espero vuestras noticias al respecto. Muchas gracias.
        Nombre: <b>"
.$_POST["nombre"]."</b><br>
        
        Apellidos: <b>"
.$_POST["apellidos"]."</b><br>
                
        Telefono: <b>"
.$_POST["telf"]."</b><br>
        
        E-mail: <b>"
.$_POST["email"]."</b><br>
        
        Dirección: <b>"
.$_POST["direccion"]."</b><br>
        
        Poblacion: <b>"
.$_POST["poblacion"]."</b><br>
        
        Codigo Postal: <b>"
.$_POST["cp"]."</b><br>

        Provincia: <b>"
.$_POST["provincia"]."</b><br>
        
        Comentarios: <b>"
.$_POST["comen"]."</b><br>";

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

      
//Indicamos el fichero a adjuntar si el usuario seleccionó uno en el formulario
      
$archivo ="".$_POST["curricu"].""
      
$archivo_name "curriculum-".$_POST["nombre"]."";
     
// if ($achivo !="none") {
    
$mail-> AddAttachment($archivo,$archivo_name); //ruta absoluta en vez de $archivo=biocarburantescml.es/pruebas/informacion/cuadro.xls  ES RECOMENDABLE PONER SIEMPER RUTA RELATIVA
    // }

      //Indicamos cuales son las direcciones de destino del correo y enviamos 
      //los mensajes
     //reset($direcciones);
      //while (list($clave, $valor)=each($direcciones)) {
    
$mail->AddAddress($direcciones);

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

    
//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas 
    //como mucho para intentar enviar el mensaje, cada intento se hara 5 s
    //segundos despues del anterior, para ello se usa la funcion sleep
     
$intentos=1
       while((!
$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
       
sleep(5);
            
//echo $mail->ErrorInfo;
            
$exito $mail->Send();
            
$intentos=$intentos+1;                
       }

    
//La clase phpmailer tiene un pequeño bug y es que cuando envia un mail con
    //attachment la variable ErrorInfo adquiere el valor Data not accepted, dicho 
    //valor no debe confundirnos ya que el mensaje ha sido enviado correctamente
    
if ($mail->ErrorInfo=="SMTP Error: Data not accepted") {
       
$exito=true;
        }
        
    if(!
$exito)
    {
       echo 
"Problemas enviando correo electrónico a ".$direcciones;
       echo 
"<br>".$mail->ErrorInfo;    
    }
    else
    {
       
//Mostramos un mensaje indicando las direccion de 
       //destino y fichero  adjunto enviado en el mensaje    
      /* $mensaje="<p>Has enviado un mensaje a:<br>";
       $mensaje.=$direcciones." ";
       if ($archivo !="none") {
        $mensaje.="Con un fichero adjunto llamado ".$archivo_name;
       }
       $mensaje.="</p>";
            echo $mensaje;*/
       
header("Location:form_enviado.php?&id_usuario=$id_usuario&tipo=$tipo");
       
// Borro las direcciones de destino establecidas anteriormente
        
$mail->ClearAddresses();
    
    } 
Mi gran duda es como puedo indicarle por POST que coja ese archivo y lo envíe... estoy intenta queintenta pero voya saturar mi email XDDD

Alguna ayudita por ahí porfiss???????????

saludoss!!!