Foros del Web » Programando para Internet » PHP »

Envio de e-mail con contenido HTML

Estas en el tema de Envio de e-mail con contenido HTML en el foro de PHP en Foros del Web. Me gustaría que me ayudasen a resolver este problema, si es que se puede, supongo que si... Tengo un formulario donde los clientes que se ...
  #1 (permalink)  
Antiguo 14/11/2007, 01:56
 
Fecha de Ingreso: noviembre-2007
Mensajes: 55
Antigüedad: 16 años, 5 meses
Puntos: 0
Envio de e-mail con contenido HTML

Me gustaría que me ayudasen a resolver este problema, si es que se puede, supongo que si...
Tengo un formulario donde los clientes que se conectan pueden introducir una referencia y una cantidad, a medida que van añadiendo referencias y cantidades se va llenando una tabla a modo de carrito de la compra.
Esta tabla nos muestra el contenido de un array, que es el que vamos llenando al introducir las referencias.
Hasta aqui todo genial.

El problema viene cuando quiero que una vez que el cliente acepte el pedido se le envíe esa misma tabla por e-mail, de manera que tenga una copia de dicho pedido.

En resumen, quiero enviar por email el contenido del array dentro de una tabla.

Se puede hacer?

Gracias y saludos!!
  #2 (permalink)  
Antiguo 14/11/2007, 02:35
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 5 meses
Puntos: 5
De acuerdo Re: Envio de e-mail con contenido HTML

Mira esta función que encontre en el manual de php

Código PHP:
function send_mail($to$body$subject$fromaddress$fromname$attachments=false)
{
  
$eol="\r\n";
  
$mime_boundary=md5(time());

  
# Common Headers
  
$headers .= "From: ".$fromname."<".$fromaddress.">".$eol;
  
$headers .= "Reply-To: ".$fromname."<".$fromaddress.">".$eol;
  
$headers .= "Return-Path: ".$fromname."<".$fromaddress.">".$eol;    // these two to set reply address
  
$headers .= "X-Mailer: PHP v".phpversion().$eol;          // These two to help avoid spam-filters
  
$headers .= "Message-ID: <".time()."-".$fromaddress.">".$eol;

  
# Boundry for marking the split & Multitype Headers
  
$headers .= 'MIME-Version: 1.0'.$eol;
  
$headers .= "Content-Type: text/html; charset=iso-8859-1".$eol.$eol;

  
# Open the first part of the mail
  //$msg = "--".$mime_boundary.$eol;
 
  #$htmlalt_mime_boundary = $mime_boundary."_htmlalt"; //we must define a different MIME boundary for this section
  # Setup for text OR html -
  //$msg .= "Content-Type: multipart/alternative; boundary=\"".$htmlalt_mime_boundary."\"".$eol.$eol;

  # Text Version
  /*$msg .= "--".$htmlalt_mime_boundary.$eol;
  $msg .= "Content-Type: text/plain; charset=iso-8859-1".$eol;
  $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
  $msg .= strip_tags(str_replace("<br>", "\n", substr($body, (strpos($body, "<body>")+6)))).$eol.$eol;*/

  # HTML Version
  /*$msg .= "--".$htmlalt_mime_boundary.$eol;
  $msg .= "Content-Type: text/html; charset=iso-8859-1".$eol;
  $msg .= "Content-Transfer-Encoding: 8bit".$eol.$eol;*/
  
$msg $body.$eol.$eol;

  
//close the html/plain text alternate portion
  #$msg .= "--".$htmlalt_mime_boundary."--".$eol.$eol;

  
if ($attachments !== false)
  {
    for(
$i=0$i count($attachments); $i++)
    {
      if (
is_file($attachments[$i]["file"]))
      {  
        
# File for Attachment
        
$file_name substr($attachments[$i]["file"], (strrpos($attachments[$i]["file"], "/")+1));
       
        
$handle=fopen($attachments[$i]["file"], 'rb');
        
$f_contents=fread($handlefilesize($attachments[$i]["file"]));
        
$f_contents=chunk_split(base64_encode($f_contents));    //Encode The Data For Transition using base64_encode();
        
$f_type=filetype($attachments[$i]["file"]);
        
fclose($handle);
       
        
# Attachment
        
$msg .= "--".$mime_boundary.$eol;
        
$msg .= "Content-Type: ".$attachments[$i]["content_type"]."; name=\"".$file_name."\"".$eol;  // sometimes i have to send MS Word, use 'msword' instead of 'pdf'
        
$msg .= "Content-Transfer-Encoding: base64".$eol;
        
$msg .= "Content-Description: ".$file_name.$eol;
        
$msg .= "Content-Disposition: attachment; filename=\"".$file_name."\"".$eol.$eol// !! This line needs TWO end of lines !! IMPORTANT !!
        
$msg .= $f_contents.$eol.$eol;
      }
    }
  }

  
# Finished
  //$msg .= "--".$mime_boundary."--".$eol.$eol;  // finish with two eol's for better security. see Injection.
 
  # SEND THE EMAIL
  
ini_set(sendmail_from,$fromaddress);  // the INI lines are to force the From Address to be used !
  
$mail_sent mail($to$subject$msg$headers);
 
  
ini_restore(sendmail_from);
 
  return 
$mail_sent;

Las partes que estan comentadas arriba son trozos que a mi no me servían pq aparecía el mail raro. Y fijate donde pone "# Text Version", esa parte esta comentada para usar la de más abajo para html. Lo cojonudo es que admite hasta archivos adjuntos
  #3 (permalink)  
Antiguo 14/11/2007, 03:04
 
Fecha de Ingreso: noviembre-2007
Mensajes: 55
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Envio de e-mail con contenido HTML

Gracias por contestar.
Pero no veo donde poner el contenido html, donde lo pongo?

Saludos
  #4 (permalink)  
Antiguo 14/11/2007, 04:04
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 5 meses
Puntos: 5
Re: Envio de e-mail con contenido HTML

Se me olvido ese pequeño detalle:

Inventate una variable que lleve ese código metido dentro, pero tienes que respetar los saltos de línea y todo así que te pongo un ejemplo que siempre es mejor que intentar explicarlo:
Código PHP:
$eol="\n";

$txt =      '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'.$eol;
$txt .=     '<html xmlns="http://www.w3.org/1999/xhtml">'.$eol;
$txt .=     '<head>'.$eol;
$txt .=     '<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />'.$eol;
$txt .=     '</head>'.$eol;
$txt .=     '<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">'.$eol;
$txt .=     '<table width="842" height="510" border="0">'.$eol;
$txt .=     '<tr>'.$eol;
$txt .=     '<td>&nbsp;</td>'.$eol;
$txt .=     '<td width="370">&nbsp;</td>'.$eol;
$txt .=     '</tr>'.$eol;
$txt .=     '</table>'.$eol
la variable $eol es el salto de línea muy necesario pq si no los programas de correo se rayan y no leen el html
Creo que ahora si esta todo....

Ahh una cosa más, si lo quieres enviar a varios destinatarios solo tienes que rellenar la variable $to con los correos separados por comas ","
  #5 (permalink)  
Antiguo 14/11/2007, 06:34
Avatar de Wallack  
Fecha de Ingreso: diciembre-2006
Ubicación: España / Santander
Mensajes: 61
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: Envio de e-mail con contenido HTML

Un consejo, phpmailer @ google.
  #6 (permalink)  
Antiguo 15/11/2007, 03:35
 
Fecha de Ingreso: noviembre-2007
Mensajes: 55
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Envio de e-mail con contenido HTML

No hay algo mas sencillo?

Solo quiero extraer el contenido del array y enviarlo por email, nada mas.

Gracias x las respuestas pero busco algo mas simple

Salu2
  #7 (permalink)  
Antiguo 15/11/2007, 06:29
 
Fecha de Ingreso: noviembre-2007
Mensajes: 55
Antigüedad: 16 años, 5 meses
Puntos: 0
Este Foro Sirve De Algo

Este Foro Sirve De Algo, O Soy Yo El Q Hace Preguntas Demasiado Complicadas?
  #8 (permalink)  
Antiguo 15/11/2007, 06:45
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 5 meses
Puntos: 5
Re: Envio de e-mail con contenido HTML

personalmente no me parece tan complicado copiar y pegar el código que te puse más arriba.

Solo hay que moficiar la var $txt con el html que quieras poner tu.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 14:55.