viernes, 1 de febrero de 2013

Envío múltiple de emails ocultos con formato HTML y archivo adjunto. mail()


REQUISITOS: tener instalado y configurado un servidor de email en la máquina. Si tienes instalado XAMPP, Mercury es el servidor de email por defecto. Para configurar Mercury ve al siguiente enlace ...CONFIGURAR MERCURY
 
En el siguiente ejemplo se mostrará como enviar un email a múltiples destinatarios ocultando las direcciones de email de los mismos, de esta forma se evita que la base de datos de emails quede al descubierto, la aplicación puede ser útil por ejemplo para enviar noticias a una gran cantidad de usuarios.



La aplicación permitirá enviar emails con formato HTML y de paso también la ventaja de poder adjuntar un archivo.

Código de ejemplo ...

<?php
/* By http://php-estudios.blogspot.com*/

if (isset($_POST["email"]))
{
function form_mail($sPara, $sAsunto, $sTexto, $sDe, $mensaje)
{
$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";
 
if ($sDe)$sCabeceras = "From: $sDe\n";
else $sCabeceras = "";
$sCabeceras .= "MIME-version: 1.0\n";
$sTexto = $sTexto."\n".$mensaje;

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/html;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);
}
}
 
$sCabeceras.= " Bcc: $sPara" . "\r\n"; 
 
if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
return(mail(null, $sAsunto, $sTexto, $sCabeceras));
}

//Ejecutamos la función anterior
$destinatarios = $_POST["destinatarios"];
$asunto = $_POST["asunto"];
$from = "tuemail@loquesea.com"; // Email del remitente
$mensaje = $_POST["mensaje"]; //acepta HTML

if (form_mail($destinatarios, $asunto, '', $from, $mensaje))
echo "Su formulario ha sido enviado con exito";
}
?>

<!DOCTYPE HTML>
<html>
<head>
<title>Envío múltiple de emails ocultos con formato HTML y archivo adjunto. mail()</title>
</head>
<body>
<form name='formulario' id='formulario' method='post' action='' target='_self' enctype="multipart/form-data">
<table>
<tr>
<td></td>
<td><input type='submit' value='Enviar'></td>
</tr>
<tr>
<td>Destinatarios ocultos:</td>
<td><input type='text' name='destinatarios' id='destinatarios' size="100"> <p>Separados por comas: email1@loquesea.com, email2@loquesea.com, ...</p></td>
</tr>
<tr>
<td>Asunto:</td>
<td><input type='text' name='asunto' id='asunto'></td>
</tr>
<tr>
<td>Adjuntar archivo:</td>
<td><input type='file' name='archivo1' id='archivo1'></td>
</tr>
<tr>
<td>Mensaje:</td>
<td></td>
</tr>
</table>
<textarea name="mensaje" cols="50" rows="10" id="mensaje"></textarea>
<input type="hidden" name="email">
</form>
</body>
</html>




No hay comentarios: