Ver Mensaje Individual
  #10 (permalink)  
Antiguo 03/02/2006, 06:34
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por carlosfocus
esta función dandole buen uso puede significar una herramienta muy importante.
ni se te ocurra hacer spam con este script, porque te encontrarán fácilmente te lo garantizo.
esta comentado en cada linea para que puedas estudiarlo.

Código PHP:
function sendmail($asunto,$mensaje,$destinatario,$destinario,$cc='',$cco='',$reply='',$formato='',$attach='')
{
   
$docsnames=NULL;//Definimos Variables
   
$fcuerpo=NULL;//Definimos Variables
   
if(!$formato)   $formato='html'//En caso de no estar definido el formato tomar html por defecto
   
if(!$attach)   $attach=Array(); //En caso de que no tenga archivos adjuntos, mostrar array vacio
   /* Adjuntando los Archivos al Mensaje */
   
while(list($campo,$valor)=each($attach))
   {
      if(
$attach[$campo]['size']!=0)
      {
         if(!
$attach[$campo]['data'])   $attach[$campo]['data']=fread(fopen($attach[$campo]['tmp_name'], "r"),$attach[$campo]['size']);
         
$docsnames.= "X-attachments: ".$attach[$campo]['name']."\n";
         
$fcuerpo   .="\n--Neftali-Yaguas\n"
                  
."Content-type: ".$attach[$campo]['type']."; name=\"".$attach[$campo]['name']."\"\n"
                  
."Content-Transfer-Encoding: BASE64\n"
                  
."Content-disposition: attachment; filename=\"".$attach[$campo]['name']."\"\n\n"
                  
.chunk_split(base64_encode($attach[$campo]['data']))."\n";
      }
   }
   
/* Aplicando Cabezeras al Mensaje*/
   
$cabeceras =          "From: ".$destinatario."\n";
   if(
$cc)$cabeceras .=   "CC: ".$cc."\n";
   if(
$cco)$cabeceras .=    "BCC: ".$cco."\n";
   if(
$reply)$cabeceras .= "Reply-To: ".$reply."\n";
   
$cabeceras   .=         "X-Priority: 1\n"
            
.         "X-MSMail-Priority: High\n"
            
.         "X-Mailer: Neftali Yaguas -\"Sendmail Attach files 1.2\"- [email protected]\n"
            
.         "Return-Path: ".$destinatario."\n"
            
.         "MIME-version: 1.0\n"
            
.         "Content-type: multipart/mixed; boundary=\"Neftali-Yaguas\"\n"
            
.         "Content-transfer-encoding: 7BIT\n".$docsnames;
   
/* Comienzo del Cuerpo del Mensaje*/
   
$cuerpo=            "--Neftali-Yaguas\n"
            
.         "Content-type: text/".$formato."; charset=US-ASCII\n"
            
.         "Content-transfer-encoding: 7BIT\n"
            
.         "Content-description:Cuerpo de Mensaje\n\n"
            
.         $mensaje."\n\n".$fcuerpo."--Neftali-Yaguas--\n";
   
/* Enviando el Mensaje*/
   
return mail($destinario,$asunto,$cuerpo,$cabeceras);

para actualizaciones acerca de la función visita:
http://www.phpclasses.org/trackback/...kage/2413.html
La forma de usarlo es la siguiente:
despues de pegar el codigo anterior al principio de tu documento, (recomiendo insertarlo desde un include)
cuando vallas a enviar email usas el siguiente codigo

Código PHP:
<?
sendmail
("Asunto del mensaje",$mensaje,'"Tu Nombre"<[email protected]>','[email protected]')
?>
donde esta la variable $mensaje que esta en negrita, esa es la variable que trae el mensaje completo, este script formatea en html

puedes editarlo de la siguiente manera:

para la variable adjunto, haces el siguiente proceso:

Código PHP:
$archivo1['name']='imagen.jpg'//nombre del archivo
$archivo1['tmp_name']='../imagen.jpg'//ruta del archivo
$archivo1['size']='1500'// peso del archivo. (por defecto es el peso calculado de tmp_name
$archivo1['type']='Tipo mime del archivo'// ejemplo: image/jpeg, text/html
$archivo1['data']='contenido del archivo'// este solo es necesario
# si el archivo es creado desde codigo, pero si se define este no
# sara el valor de tmp_name. 
Código PHP:
$adjunto['Archivo1']=$archivo1;
$adjunto['Archivo2']=$archivo2;
$adjunto['...']=...; // este es un nombre cualquiera. 
Código PHP:
sendmail("Asunto del mensaje",$mensaje,'"Tu Nombre"<[email protected]>','[email protected]',$cc,$cco,$replyto,$formato,$adjunto); 
en caso de que los archivos adjuntos deban venir de un formulario solo hay que hacer esto:

Código PHP:
$adjunto=$_FILES
[comentarios]

Está bien esta mini-función .. Pero por mi parte encuentro mejor la classe:

PHP Mailer
http://phpmailer.sourceforge.net

Un saludo,