Tema: FAQ's de PHP
Ver Mensaje Individual
  #151 (permalink)  
Antiguo 19/12/2005, 16:37
Avatar de Kernellover
Kernellover
 
Fecha de Ingreso: noviembre-2002
Ubicación: Perdido
Mensajes: 251
Antigüedad: 22 años
Puntos: 0
Tema: Enviar correos en HTML y TXT de manera facil.
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&Oacute;N</td>
  </tr>
  <tr>
    <td><table border="0" cellpadding="6" cellspacing="0">
        <tr>
          <td><b><br>
            <br>
            <br>
            Este correo ha sido env&iacute;ado autom&aacute;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}&nbsp;</td>
              </tr>
              </table>
            <br></td>
        </tr>
      </table></td>
  </tr>
</table>
</body>
</html> 
Bueno, lo he retocado un poco a saco, pero se podrían poner mas campos o lo que se quisiera como se quisiera.

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:
SOLICITUD DE INFORMACIÓN
 
  Este correo se ha enviado automáticamente.
 
  - Nombre: {nombre}
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.

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);