Pregunta: ¿Como envio desde php un correo en formato htmly txt a la vez?
Respuesta: Con la función mail, pero usando un truquillo para no complicarse la vida escriviendo el código a mano y así poder usar el dreamweaver u otros programas de diseño web.
Primero creamos un documento html que será el que recibiremos por correo, con sus tablas, css, etc... pero allí donde queramos escrivir algo por medio de nuestro escript de forma dinamica nos creamos una variable imaginaria que debería estar entre corchetes, en este ejemplo será nombre {nombre}
mail.html
Código HTML:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- b { font-family: Arial, Helvetica, sans-serif; font-size: 11px; color: #666666; text-align: justify; font-weight: bold; line-height: 14px } td { font-family: Arial, Helvetica, sans-serif; font-size: 11px; color: #666666; text-align: justify; line-height: 14px; } .titular { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-weight: bolder; letter-spacing: 9px; word-spacing: 4px; color: #FFFFFF; text-indent: 6px; text-transform: uppercase; line-height: 22pxcolor: #FFFFFF } --> </style> </head> <body leftmargin="0" bottommargin="0" rightmargin="0" topmargin="0"> <table width="100%" border=0 cellpadding=4 cellspacing=4 bgcolor="#FFFFFF"> <tr> <td bgcolor="#724041" class="titular">SOLICITUD DE INFORMACIÓN</td> </tr> <tr> <td><table border="0" cellpadding="6" cellspacing="0"> <tr> <td><b><br> <br> <br> Este correo ha sido envíado automáticamente</td> </tr> </table> <br> <br> <table width="100%" border="0" cellpadding="6" cellspacing="0"> <tr> <td><table width="100%" border="1" cellpadding="4" cellspacing="0" bordercolor="#EFE2E2"> <tr valign="top"> <td width="25%"><b>Nombre:</b></td> <td width="75%">{Nombre} </td> </tr> </table> <br></td> </tr> </table></td> </tr> </table> </body> </html>
Luego podríamos tener un documento de texto con las mismas caracteristcicas para poder enviar el correo en ambos formatos, y de este modo el navegador mostrará el mas adecuado en función de la aplicación de correo que estemos usando.
mail.txt
Código:
Luego el código en un script a parte que llama a los dos archivos y remplaza las cadenas entre corchetes, como sigue. Sería digamos donde estaría la acción del script.SOLICITUD DE INFORMACIÓN Este correo se ha enviado automáticamente. - Nombre: {nombre}
Código PHP:
/* * * * * * * * * * SCRIPT PHP (Envio de correo electrónico) * * * * * * */
$correo_destinatario = "[email protected]"; //La dirección que recibirá el correo
$correo_nombre = "MI NOMBRE"; //El nombre de la persona del correo
$motivo_empresa = "Solicitud de información"; //El conocido Subject o Motivo
/* * * * * * * * * * FUNCIONES PHP * * * * * * * * * * * * * * * * * * * */
//Esta función es la encargada de reemplazar las variables que nos hemos creado
// entre corchetes por las recibidas por el fomulario, toma como parametro la
// ruta del archivo y retorna todo el texto con las variables cambiadas.
function prepara_formato($archivo){
global $Nombre,$_SERVER,$PHP_SELF;
$fp=fopen($archivo,"r");
$contenido=fread($fp,filesize($archivo));
fclose($fp);
$contenido = eregi_replace("{Nombre}",$Nombre,$contenido);
// aquí añadiriamos los demás campos, por ejemplo el apellido:
//$contenido = eregi_replace("{Apellido}",$Apellido,$contenido);
return $contenido;
}
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
$boundary = md5(time().rand(1,100));
$priorities = array(1=>'1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)' );
$priority = $priorities[3];
$headers = "From: $correo_nombre <$correo_destinatario>\r\n";
$headers .= "Return-Path: $correo_destinatario\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "X-Mailer:PHP 5.1\r\n";
$headers .= "X-Priority: $priority\r\n";
//$headers .= "Content-Type: multipart/mixed;";
$headers .= "Content-Type: multipart/alternative; ";
$headers .= "boundary = $boundary\r\n\r\n";
if ($Envia!=""){ // El botón del formulario se llama Envia
$Nombre = trim(ucwords($Nombre)); //Nombre es un campo de este formulario
// text e-mail
$archivo="mail.txt";
$contenido=prepara_formato($archivo);
$cuerpo_1 = "--$boundary\r\n" .
"Content-Type: text/plain; charset=ISO-8859-1\r\n" .
"Content-Transfer-Encoding: base64\r\n\r\n";
$cuerpo_1 .= chunk_split(base64_encode($contenido));
// html e-mail
$archivo="mail.htm";
$contenido=prepara_formato($archivo);
$cuerpo_1 .= "--$boundary\r\n" .
"Content-Type: text/html; charset=ISO-8859-1\r\n" .
"Content-Transfer-Encoding: base64\r\n\r\n";
$cuerpo_1 .= chunk_split(base64_encode($contenido));
mail($correo_destinatario,$motivo_empresa,$cuerpo_1,$headers);
}