Ver Mensaje Individual
  #7 (permalink)  
Antiguo 02/02/2006, 15:18
Avatar de carlosfocus
carlosfocus
 
Fecha de Ingreso: enero-2006
Ubicación: Venezuela
Mensajes: 823
Antigüedad: 18 años, 3 meses
Puntos: 0
Mensaje Envio de E-mail con Archivos Adjuntos, y Propiedades Personalizadas.

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
__________________
Carlos Herrera
Web Developer
www.carlos.com.ve
Para descargar archivos propios a su Teléfono Mobil? www.carlosfocus.com