Un pequeÑo error en mi codigo.

Hola webmasters, gracias por su tiempo y atencion.

ok tengo un formulario en el cual necesito me adjunten archivos:

<form action="formulario.php" method="post" enctype="multipart/form-data" name="form1" style="background-color:#e6ecee ; width:400px ; border:solid #009966 1px" ">
<table border="0">
<tr>
<td width="130"><div align="right" class="Estilo22 Estilo24">Nombre y Apellido:</div></td>
<td width="239"><div align="left">
<label>
<input name="nombre" type="text" id="nombre" />
</label>
</div></td>
</tr>
<tr>
<td><div align="right" class="Estilo27">Telefono:</div></td>
<td><div align="left">
<label>
<input name="telefono" type="text" id="telefono" />
</label>
</div></td>
</tr>
<tr>
<td><div align="right" class="Estilo27">E-mail:</div></td>
<td><input name="email" type="text" id="email" /> </td>
</tr>
<tr>
<td><div align="right" class="Estilo27">Adjuntar:</div></td>
<td><div align="left">
<label>
<input name="archivo" type="file" id="archivo" />
</label>
</div></td>
</tr>
<tr>
<td><div align="right">
<input name="restablecer" type="reset" id="restablecer" value="Restablecer" />
</div></td>
<td><div align="left">
<input name="Enviar" type="submit" id="Enviar" value="Enviar" />
</div></td>
</tr>
</table>
</form>


y le puse el siguiente codigo:

<body>
<?php
$sendTo = "[correo eliminado]";
$subject = "Curriculum";
$telefono = $_POST["telefono"];
$archivo = $_FILES["archivo"];
$email = $_POST["email"];
$nombre = $_POST["nombre"];
$headers .= "";
$message = "Nombre: " . $nombre . "\nTelefono: " . $telefono . "\nCurriculum: " . $archivo . "\nEmail: " . $email;
mail($sendTo, $subject, $message, $headers);
?>

<div style="background-color:#e6ecee ; width: 380px ; border:solid 1px ; padding:5px ; margin-left: 250px">
<p class="Estilo2">Intersystem__________</p>
<p class="Estilo1">*Muchas gracias, tu curriculum fue enviado.</p>
<p class="Estilo1" style="border:solid 1px ; width: 160px"><a href="http://www.intersystem-arg.com/recursos.html">Regresar a la web.</a></p>
</div>
</body>


Pero no me llega el archivo adjunto.

Por ahi me comentaron que debia modificar esta linea
$_FILES['archivo'] dejandolo asi : $_FILES['archivo']['tmp_name'];


Pero aun asi el email me llegaba de la siguiente manera:

Nombre: Nico
Telefono: 123
Curriculum: C:\PHP\uploadtemp\php2300.tmp
Email: asd@asd


Se que hay algo en el código que no estoy poniendo bien.
Ya intente con el famoso post: http://www.original-design.es/tutoriales/email_con_archivos_adjunto…

Pero no lo entiendo, ese codigo no me funciona y no logro adaptarlo.

Agradeceria si marcan mi error y me explican que es lo que estoy haciendo mal.
Hola, el código está bien y el archivo sí te llega, lo que ocurre es que el archivo es temporal, por ende, el archivo es php2300.tmp. Para poder ver el archivo en tu servidor debes utilizar la función move_uploaded_file($nombre_archivo, $ruta_destino);, en tu caso, $nombre_archivo sería php2300.php (aunque debes especificar la ruta completa, no solamente el archivo) o $_FILES['archivo']['tmp_name'];. Lo siguiente es la forma más simple de subir un archivo al servidor:

<?php
if (!empty($_FILES)) {
	$tempFile = $_FILES['archivo']['tmp_name'];
        $carpetaArchivosSubidos = "subidos";
	$targetPath = $_SERVER['DOCUMENT_ROOT'].$carpetaArchivosSubidos. '/';
	$targetFile =  str_replace('//','/',$targetPath) . $_FILES['archivo']['name']; // $_FILES['archivo']['name'] contiene el nombre del archivo original; utiliza echo o print para mostrarlo.
	
		// Quita el comentario de la siguiente línea para crear la carpeta:
		// mkdir(str_replace('//','/',$targetPath), 0755, true);
		
		move_uploaded_file($tempFile, $targetFile);
                // La siguiente línea muestra la ruta y el nombre del archivo en el servidor (descomentala para ver):
		//echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
}
?>

Este trozo de código debe ser insertado en el resto del código que posteaste.
Primero que nada quisiera agradecerte MUCHISIMO ya que sos la primera persona que me da una respuesta concreta, directa y con explicacion que logre entender.

segundo una pequeñita duda (disculpa es que manejo muy poco php)

Puse el codigo pero me dice que tengo un error en la linea 55:

<?php 
$sendTo = "[correo eliminado]"; 
$subject = "Curriculum"; 
$telefono = $_POST["telefono"]; 
$archivo = $_FILES["archivo"]; 
$email = $_POST["email"];
$nombre = $_POST["nombre"];
$headers .= ""; 
$message = "Nombre: " . $nombre . "\nTelefono: " . $telefono . "\nCurriculum: " . $archivo . "\nEmail: " . $email; 
mail($sendTo, $subject, $message, $headers); 
if (!empty($_FILES)) {
    $tempFile = $_FILES['archivo']['tmp_name'];
        $carpetaArchivosSubidos = "subidos";
    $targetPath = $_SERVER['DOCUMENT_ROOT'].$carpetaArchivosSubidos. '/';
    $targetFile =  str_replace('//','/',$targetPath) . $_FILES['archivo']['name']; // $_FILES['archivo']['name'] contiene el nombre del archivo original; utiliza echo o print para mostrarlo.
    echo $_FILES['archivo']['name']
        // Quita el comentario de la siguiente línea para crear la carpeta:
         mkdir(str_replace('//','/',$targetPath), 0755, true);
        
        move_uploaded_file($tempFile, $targetFile);
                // La siguiente línea muestra la ruta y el nombre del archivo en el servidor (descomentala para ver):
        echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
}

?>


la linea 55 es :
 mkdir(str_replace('//','/',$targetPath), 0755, true);

Creo que ahi debo especificar una carpeta? o crear el directorio? pero no estoy muy seguro como.

el error que me sale es:
Parse error: parse error, expecting `','' or `';'' in E:\webspace\intersystem\ftpinter\intersystem-arg.com\www\formulario.php on line 55
Hmmm, ¿que pasa si comentas nuevamente la línea y creas la carpeta ("subidos" en este caso) de forma manual? Lo que ocurre es que esa función (mkdir) no sé por qué, pero siempre falla en Windows, solamente funciona en Linux (al menos a mi siempre me falla), por ende, si tu servidor usa Linux, entonces funcionará, en caso contrario no (tu servidor tiene Windows, puesto que es el único que asigna una letra al disco duro).

Inténtalo y avisame cómo te va.

P.D.: mkdir es la función para crear directorios/carpetas.
Ok, creo que estamos muy cerca.

cree el directorio (primero cree una carpeta fisica en el ftp y de ahi saque la direccion que fue la que añadí al codigo quedando asi:
// Quita el comentario de la siguiente línea para crear la carpeta:
         //mkdir(str_replace('//','/',$targetPath), 0755, true);
		 mkdir("/ftpinter/intersystem-arg.com/subidos/", 0700);
        
        move_uploaded_file($tempFile, $targetFile);
                // La siguiente línea muestra la ruta y el nombre del archivo en el servidor (descomentala para ver):
        echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
}

?>

Añadi un puntoycoma que faltaba y solucione el error anterior, pero ahora tengo un nuevo error:

canchas.txt
Warning: mkdir(/ftpinter/intersystem-arg.com/subidos/): No such file or directory in E:\webspace\intersystem\ftpinter\intersystem-arg.com\www\formulario.php on line 56

Warning: move_uploaded_file(subidos/canchas.txt): failed to open stream: No such file or directory in E:\webspace\intersystem\ftpinter\intersystem-arg.com\www\formulario.php on line 58

Warning: move_uploaded_file(): Unable to move 'C:\PHP\uploadtemp\php245D.tmp' to 'subidos/canchas.txt' in E:\webspace\intersystem\ftpinter\intersystem-arg.com\www\formulario.php on line 58
subidos/canchas.txt


linea 56:
	 mkdir("/ftpinter/intersystem-arg.com/subidos/", 0700);

linea 58:
     move_uploaded_file($tempFile, $targetFile);


Nose, me suena a que no conecta con el ftp o algo asi ..
Lo que ocurre es que estas creando una carpeta (con mkdir) en la ruta que especificaste, pero esa ruta no existe. Si creaste la carpeta en el servidor, entonces la línea mkdir(...); ya no sirve (mkdir crea una carpeta); quitando esa línea debería funcionar. Igualmente debes asegurarte que la carpeta "subidos" haya sido creada correctamente, o sea, tienes que poder verla tú para que funcione (con el programa FTP, por ejemplo); debería quedar bajo la carpeta public_html (en la raíz del sitio), o sea, deberías ser capaz de escribir http://www.tuweb.com/subidos y, al menos, ver un mensaje que diga que no tienes acceso a dicha carpeta (a no ser de que tenga los permismos como 766, en cuyo caso podrás ver el contenido de la carpeta).
Ok disculpa, ayer intente todo el dia para resolverlo solo pero no lo logre es por eso que pregunto una vez mas :)

Finalmente el codigo quedo asi:

<?php 
$sendTo = "[correo eliminado]"; 
$subject = "Curriculum"; 
$telefono = $_POST["telefono"]; 
$archivo = $_FILES["archivo"]; 
$email = $_POST["email"];
$nombre = $_POST["nombre"];
$headers .= ""; 
$message = "Nombre: " . $nombre . "\nTelefono: " . $telefono . "\nCurriculum: " . $archivo . "\nEmail: " . $email; 
mail($sendTo, $subject, $message, $headers); 
if (!empty($_FILES)) {
    $tempFile = $_FILES['archivo']['tmp_name'];
        $carpetaArchivosSubidos = "subidos";
    $targetPath = $_SERVER['DOCUMENT_ROOT'].$carpetaArchivosSubidos. '/';
    $targetFile =  str_replace('//','/',$targetPath) . $_FILES['archivo']['name']; // $_FILES['archivo']['name'] contiene el nombre del archivo original; utiliza echo o print para mostrarlo.
    echo $_FILES['archivo']['name'];
        // Quita el comentario de la siguiente línea para crear la carpeta:
         //mkdir(str_replace('//','/',$targetPath), 0755, true);
		 
        
        move_uploaded_file($tempFile, $targetFile);
                // La siguiente línea muestra la ruta y el nombre del archivo en el servidor (descomentala para ver):
        echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
}

?>

Ok, ahora no me salio error, llego el email y en la pagina de mensaje enviado me aparecio lo siguiente:

canchas.txtsubidos/canchas.txt.



Hasta aca todo bien, pero el email me llega sin el adjunto.[:(]


Nombre: sd
Telefono: asd
Curriculum: Array
Email: asdasddss

Creo que en donde dice root deberia cambiar e indicar el directorio de la carpeta subidos no?
aunque no se bien como seria.
Lo que ocurre es que, como dice serverdns, solamente estas enviando texto plano ($header = ""), por lo que debes especificar lo que quieres enviar. En el enlace que puso serverdns tienes un código que debería funcionar, solo debes incluir la función (function form_mail()) en el archivo y luego llamar la función así:

<?php
// TODO ESTE contenido sólo procesa el envío del e-mail con el archivo adjunto, por lo que sigue siendo necesario la otra parte que sube el archivo
function form_mail($sPara, $sAsunto, $sTexto, $sDe)
{
  $bHayFicheros = 0;
  $sCabeceraTexto = "";
  $sAdjuntos = "";

  if ($sDe)
    $sCabeceras = "From:".$sDe."\n";
  else 
    $sCabeceras = "";

  $sCabeceras .= "MIME-version: 1.0\n";
  foreach ($_POST as $sNombre => $sValor)
    $sTexto = $sTexto."\n".$sNombre." = ".$sValor;
    foreach ($_FILES as $vAdjunto)
    {
      if ($bHayFicheros == 0)
     {
       $bHayFicheros = 1;
       $sCabeceras .= "Content-type: multipart/mixed;";
       $sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";

       $sCabeceraTexto = "----_Separador-de-mensajes_--\n";
       $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
       $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";

       $sTexto = $sCabeceraTexto.$sTexto;
    }
    if ($vAdjunto["size"] > 0)
   {
     $sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
     $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
     $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
     $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";

     $oFichero = fopen($vAdjunto["tmp_name"], 'r');
     $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
     $sAdjuntos .= chunk_split(base64_encode($sContenido));
     fclose($oFichero);
   }
}

  if ($bHayFicheros)
    $sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";

  return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));
}

$sendTo = "[correo eliminado]";
$subject = "Curriculum";
$telefono = $_POST["telefono"];
$archivo = $_FILES["archivo"];
$email = $_POST["email"];
$nombre = $_POST["nombre"];
$headers .= "";
$msg = "Nombre: " . $nombre . "\nTelefono: " . $telefono . "\nCurriculum: " . $archivo . "\nEmail: " . $email; 

if(form_mail($sendTo, $subject, $msg, $email)) {
  print '<div style="background-color:#e6ecee ; width: 380px ; border:solid 1px ; padding:5px ; margin-left: 250px">'.
          '<p class="Estilo2">Intersystem__________</p>'.
          '<p class="Estilo1">*Muchas gracias, tu curriculum fue enviado.</p>'.
          '<p class="Estilo1" style="border:solid 1px ; width: 160px"><a href="http://www.intersystem-arg.com/recursos.html">Regresar a la web.</a></p>'.
          '</div>';
}

?>

Ve si funciona.

No sabía de quién era la fuente, puesto que fue Intersystem quién publicó la infomación en este enlace; realmente lo que hice fue ordenar lo que él tenía, pero bueno... ahora que sé de quién es :D.

Fuente: Original Design.
Pues en el anterior post te di la respuesta era con la funcion base_64_encode no tenia mucho tiempo y vendria bien si googlearas un rato :s ...... y bueno ya iba a comenzar a crear un script pero veo y skaparate ya te dio la respuesta .

PD : Skaparate hubiera sido mejor que dieras la fuente

Fuente del codigo de skaparate : http://www.original-design.es/tutoriales/email_con_archivos_adjunto…

Recuerda que tambien hay que saber googlear :s