Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/01/2012, 04:57
Avatar de jercer
jercer
 
Fecha de Ingreso: octubre-2003
Mensajes: 373
Antigüedad: 20 años, 6 meses
Puntos: 13
Respuesta: Archivos del servidor, al mail???

Código PHP:
Ver original
  1. <?php
  2. // Copyright © McAnam.com
  3. // http://www.mcanam.com/articulos/PHP.php?id=8
  4.      
  5.     function form_mail($sPara, $sAsunto, $sTexto, $sDe)
  6.     {
  7.      
  8.         $bHayFicheros = 0;
  9.         $sCabeceraTexto = "";
  10.         $sAdjuntos = "";
  11.         $sCuerpo = $sTexto;
  12.         $sSeparador = uniqid("_Separador-de-datos_");
  13.          
  14.         $sCabeceras = "MIME-version: 1.0\n";
  15.          
  16.         // Recogemos los campos del formulario
  17.         foreach ($_POST as $sNombre => $sValor)
  18.             $sCuerpo = $sCuerpo."\n".$sNombre." = ".$sValor;
  19.              
  20.         // Recorremos los Ficheros
  21.         foreach ($_FILES as $vAdjunto)
  22.         {
  23.              
  24.             if ($bHayFicheros == 0)
  25.             {
  26.                  
  27.                 // Hay ficheros
  28.                  
  29.                 $bHayFicheros = 1;
  30.                  
  31.                 // Cabeceras generales del mail
  32.                 $sCabeceras .= "Content-type: multipart/mixed;";
  33.                 $sCabeceras .= "boundary=\"".$sSeparador."\"\n";
  34.                  
  35.                 // Cabeceras del texto
  36.                 $sCabeceraTexto = "--".$sSeparador."\n";
  37.                 $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
  38.                 $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n\n";
  39.                  
  40.                 $sCuerpo = $sCabeceraTexto.$sCuerpo;
  41.                  
  42.             }
  43.              
  44.             // Se añade el fichero
  45.             if ($vAdjunto["size"] > 0)
  46.             {
  47.                 $sAdjuntos .= "\n\n--".$sSeparador."\n";
  48.                 $sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";
  49.                 $sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
  50.                 $sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";                  
  51.                  
  52.                 $oFichero = fopen($vAdjunto["tmp_name"], 'rb');
  53.                 $sContenido = fread($oFichero, filesize($vAdjunto["tmp_name"]));
  54.                 $sAdjuntos .= chunk_split(base64_encode($sContenido));
  55.                 fclose($oFichero);
  56.             }
  57.              
  58.         }
  59.          
  60.         // Si hay ficheros se añaden al cuerpo
  61.         if ($bHayFicheros)
  62.             $sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";
  63.          
  64.         // Se añade la cabecera de destinatario
  65.         if ($sDe)$sCabeceras .= "From:".$sDe."\n";
  66.          
  67.         // Por último se envia el mail
  68.         return(mail($sPara, $sAsunto, $sCuerpo, $sCabeceras));
  69.     }
  70.          
  71.         //Ejemplo de como usar:
  72.         if (form_mail("[email protected]",
  73.                                     "Activación de formulario",
  74.                                     "Los datos introducidos en el formulario son:\n",
  75.                                     "[email protected]"))
  76.         echo "Su formulario ha sido enviado con exito";
  77.          
  78.         // Ejemplo de como usar, poniendo como remitente el campo pasado de E-mail
  79.         /*
  80.         if (form_mail("[email protected]",
  81.                                     "Activación de formulario",
  82.                                     "Los datos introducidos en el formulario son:\n",
  83.                                     $_POST["E-mail"]))
  84.         echo "Su formulario ha sido enviado con exito";
  85.         */
  86.          
  87.  
  88. ?>