Foros del Web » Programando para Internet » PHP »

adjuntos en cuerpo de mensaje como texto

Estas en el tema de adjuntos en cuerpo de mensaje como texto en el foro de PHP en Foros del Web. Tengo el siguiente archivo php para enviar los datos de un formulario con adjuntos por email. Pero lo que me gustaría es que en el ...
  #1 (permalink)  
Antiguo 13/07/2010, 03:08
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 9 años, 8 meses
Puntos: 0
adjuntos en cuerpo de mensaje como texto

Tengo el siguiente archivo php para enviar los datos de un formulario con adjuntos por email. Pero lo que me gustaría es que en el cuerpo del mensaje apareciese una lista de los archivos adjuntos.

Gracias por vuestra ayuda.

Código PHP:
<?php

    
    
function form_mail($sPara$sAsunto$sTexto$sDe)
    {
    
        
$bHayFicheros 0;
        
$sCabeceraTexto "";
        
$sAdjuntos "";
        
$sCuerpo $sTexto;
        
$sSeparador uniqid("_Separador-de-datos_");
        
        
$sCabeceras "MIME-version: 1.0\n";
        
        
// Recogemos los campos del formulario
        
foreach ($_POST as $sNombre => $sValor)
            
$sCuerpo $sCuerpo."\n".$sNombre." = ".$sValor;
            
        
// Recorremos los Ficheros
        
foreach ($_FILES as $vAdjunto)
        {
            
            if (
$bHayFicheros == 0)
            {
                
                
// Hay ficheros
                
                
$bHayFicheros 1;
                
                
// Cabeceras generales del mail
                
$sCabeceras .= "Content-type: multipart/mixed;";
                
$sCabeceras .= "boundary=\"".$sSeparador."\"\n";
                
                
// Cabeceras del texto
                
$sCabeceraTexto "--".$sSeparador."\n";
                
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
                
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n\n";
                
                
$sCuerpo $sCabeceraTexto.$sCuerpo;
                
            }
            
            
// Se añade el fichero
            
if ($vAdjunto["size"] > 0)
            {
                
$sAdjuntos .= "\n\n--".$sSeparador."\n";
                
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";
                
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
                
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";                 
                
                
$oFichero fopen($vAdjunto["tmp_name"], 'r');
                
$sContenido fread($oFicherofilesize($vAdjunto["tmp_name"]));
                
$sAdjuntos .= chunk_split(base64_encode($sContenido));
                
fclose($oFichero);
            }
            
        }
        
        
// Si hay ficheros se añaden al cuerpo
        
if ($bHayFicheros)
            
$sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n";
        
        
// Se añade la cabecera de destinatario
        
if ($sDe)$sCabeceras .= "From:".$sDe."\n";
        
        
// Por último se envia el mail
        
return(mail($sPara$sAsunto$sCuerpo$sCabeceras));
    }
        
        
//Ejemplo de como usar:
        
if (form_mail("[email protected]",
                                    
"Activación de formulario",
                                    
"Los datos introducidos en el formulario son:\n",
                                    
"[email protected]"))
            echo 
"Su formulario ha sido enviado con exito";

?>
  #2 (permalink)  
Antiguo 13/07/2010, 09:20
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 10 años, 1 mes
Puntos: 55
Respuesta: adjuntos en cuerpo de mensaje como texto

en la siguiente parte podrias crear un arreglo con los nombre de los archivos y despues lo agregas al cuerpo
Código PHP:
// Se añade el fichero
            
if ($vAdjunto["size"] > 0)
            {
               
$nombres[] = $vAdjunto["name"];
       
                
$sAdjuntos .= "\n\n--".$sSeparador."\n";
                
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";
                
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
                
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";                 
                
                
$oFichero fopen($vAdjunto["tmp_name"], 'r');
                
$sContenido fread($oFicherofilesize($vAdjunto["tmp_name"]));
                
$sAdjuntos .= chunk_split(base64_encode($sContenido));
                
fclose($oFichero);
            } 
  #3 (permalink)  
Antiguo 13/07/2010, 12:19
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 12 años
Puntos: 10
Respuesta: adjuntos en cuerpo de mensaje como texto

Podri hacer algo asi:

Código PHP:

//dentro de este loop
foreach ($_FILES as $vAdjunto){ 

// ... ...

//creo que por aqui esaria bien
if ($bHayFicheros){ //agruegue las llaves
//aqui colocas el nombre del fichero
//si no me equivoco coincidira 
//el nombre con el contenido respectivo
$sCuerpo .= $vAdjunto['name']."\n";
//y aqui tu colocas el contenido del fichero            
$sCuerpo .= $sAdjuntos."\n\n--".$sSeparador."--\n"
}

// ... 


//fin de foreach ($_FILES as $vAdjunto){ 

Etiquetas: adjuntos, cuerpo, mensaje
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




La zona horaria es GMT -6. Ahora son las 23:09.