Formulario de envío de correos con Archivos Adjuntos
Hace poco tuve que hacer un sistema que me permitiera enviar archivos adjuntos en un correo enviado desde la web. Hay muchas webs donde hay ejemplos para hacer esto, yo encontré este, no sé exactamente donde pero ahí va.
Primero la función de envío.
-
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 ($_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"]> 1048576){
-
return false;
-
}
-
-
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";
-
-
}
-
}
-
-
if ($bHayFicheros)
-
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
-
}
Luego el formulario que recoge los datos
Por último el código que procesa el formulario.
-
if($_POST['submit']){
-
$namefrom=$_POST['nombre'];
-
$emailfrom='admin@dominio.com';
-
$emailto=$_POST['email'];
-
$subject=$_POST['asunto'];
-
$mensaje = "\nNombre: ".$namefrom."\n\n".$_POST['comentarios'];
-
//llamamos a la funcion de envio
-
form_mail($emailto,$subject, $mensaje, $emailfrom);
-
}
Salu2



