Ver Mensaje Individual
  #2 (permalink)  
Antiguo 14/11/2007, 02:35
dualklip
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 6 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