Ver Mensaje Individual
  #15 (permalink)  
Antiguo 10/01/2012, 06:58
Avatar de jercer
jercer
 
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Que tal,

Pues de principio todo lo que quitaste en "if ($bHayFicheros == 0)"

Lo que hace es "decir" que el mail será "multiparte", es decir, en tu caso vendrían 2 partes:

1 - El texto del email
2 - El fichero adjunto

Por lo que sería obligatorio.

Por otra parte en el HTML no hace falta que cambies nada.


parece que tienes dudas con la linea "foreach ($_FILES as $vAdjunto)"
Esto lo que hace, es recorrer el array con los archivos enviados, es decir, da igual el nombre con el que venga.

Si lo quieres hacer más personalizado en tu caso con un sólo fichero llamado (ahora) sAdjuntos, podrías hacer algo como:

Código PHP:
Ver original
  1. if ($_FILES["sAdjuntos"]["size"] > 0)
  2. {
  3. // Viene el fichero
  4.  
  5. // CABECERAS DEL MAIL (Sólo una vez, aunque vengan varios ficheros)
  6.  
  7. // Cabeceras generales del mail
  8. $sCabeceras .= "Content-type: multipart/mixed;";
  9. $sCabeceras .= "boundary=\"".$sSeparador."\"\n";
  10.                  
  11. // Cabeceras del texto
  12. $sCabeceraTexto = "--".$sSeparador."\n";
  13. $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  14. $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n\n";
  15.                  
  16. $sCuerpo = $sCabeceraTexto.$sCuerpo;
  17.  
  18.  
  19. // SE GUARDA EL FICHERO (una vez por cada fichero)
  20.  
  21. $sAdjuntos .= "\n\n--".$sSeparador."\n";
  22. $sAdjuntos .= "Content-type: ".$_FILES["sAdjuntos"]["type"].";name=\"".$_FILES["sAdjuntos"]["name"]."\"\n";
  23. $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  24. $sAdjuntos .= "Content-disposition: attachment;filename=\"".$_FILES["sAdjuntos"]["name"]."\"\n\n";                  
  25.  
  26. $oFichero = fopen($_FILES["sAdjuntos"]["tmp_name"], 'rb');
  27. $sContenido = fread($oFichero, filesize($_FILES["sAdjuntos"]["tmp_name"]));
  28. $sAdjuntos .= chunk_split(base64_encode($sContenido));
  29. fclose($oFichero);
  30.  
  31. // SE AÑADE EL FICHERO
  32. $sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";
  33.  
  34.  
  35. }

No lo he probado, pero mas o menos esa es la idea.

Por cierto ten en cuenta también que es la variable "$sCuerpo" la que tiene el texto del mensaje, por lo que en tu código original, esto debería ir después de:

$mensaje .= "Idiomas :". $Idiomas." \r\n \r\n";

y en vez de:
$sCuerpo = $sCabeceraTexto.$sCuerpo;
Poner:
$sCuerpo = $sCabeceraTexto.$mensaje;