Al igual que la anterior función, esta puede recibir cualquier campo, con el añadido de que también puede recibir campos file.
El Código HTML de ejemplo es el originario del artículo anterior al que se le han añadido 2 campos file. Como en el anterior caso, se puede enviar cualquier campo (ahora incluyendo input type file) y en cualquier cantidad. Habría que cambiar el valor del atributo action del formulario "enviar_mail.php" por la página en la que vallamos a insertar el código PHP.
En el código:
Se inician las variables, se establece la cabecera MIME, que permitirá enviar múltiples datos diferentes en el mail, como el texto con los campos del formulario en texto plano y los archivos.
Se recogen los datos del formulario.
Se recorren los ficheros enviados por el formulario de la variable global $_FILES.
Si hay archivos, la primera vez se añaden las cabeceras para enviar un mail con múltiples tipos de datos ("Content-type: multipart/mixed;") y se crea un separador para el tipo de datos ("boundary=\"".$sSeparador."\"\n") entre el texto del mail y cada fichero enviado.
Posteriormente se crean las cabeceras para el cuerpo del mensaje, definiendolo como texto plano ("Content-type: text/plain;charset=iso-8859-1\n"), se podría reemplazar "text/plain" por "text/html" y así poder pasar los datos en HTML.
Se van añadiendo los archivos con sus cabeceras y cuerpos correspondientes, los datos son pasados por la variable global $_FILES en array asociativo.
Por último se termina la cabecera y se añade al "cuerpo" del mensaje los datos de los archivos y se envía el mail.
// Si hay ficheros se añaden al cuerpo
if ($bHayFicheros)
$sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";
// Se añade la cabecera de destinatario
if ($sDe)$sCabeceras .= "From:".$sDe."\n";
// Por último se envia el mail
return(mail($sPara, $sAsunto, $sCuerpo, $sCabeceras));
}
//Ejemplo de como usar:
if (form_mail("usuario_destino@dominio.com",
"Activación de formulario",
"Los datos introducidos en el formulario son:\n",
"usuario_enviado@dominio.com"))
echo "Su formulario ha sido enviado con exito";