Comunidad de diseño web y desarrollo en internet online

Enviar archivos adjuntos en un email....

Citar            
MensajeEscrito el 23 Feb 2009 06:29 pm
Hola a todos:
Vereis, lo que estoy tratando de hacer es enviar un documento adjunto en un email utilizando la función mail() de PHP. No quiero utilizar la clase phpmailer(), quiero adjuntarlo con la función mail() o con lo que sea, pero no con phpmailer. Busqué y encontré códigos como este

Código :

$bHayFicheros = 0;
$sCabeceraTexto = "";
$sAdjuntos = "";

if ($sDe)$sCabeceras = "From:".$sDe."\n";
else $sCabeceras = "";
$sCabeceras .= "MIME-version: 1.0\n";
foreach ($_POST as $sNombre => $sValor)
$sTexto = $sTexto."\n".$sNombre." = ".$sValor;

foreach ($_FILES as $vAdjunto)
{
   if ($bHayFicheros == 0)
   {
      $bHayFicheros = 1;
      $sCabeceras .= "Content-type: multipart/mixed;";
      $sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";

      $sCabeceraTexto = "----_Separador-de-mensajes_--\n";
      $sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
      $sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";

      $sTexto = $sCabeceraTexto.$sTexto;
   }
   if ($vAdjunto["size"] > 0)
   {
      $sAdjuntos .= "\n\n----_Separador-de-mensajes_--\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($oFichero, filesize($vAdjunto["tmp_name"]));
      $sAdjuntos .= chunk_split(base64_encode($sContenido));
      fclose($oFichero);
   }
}

if ($bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
return(mail($sPara, $sAsunto, $sTexto, $sCabeceras));


Ya probé varios ejemplos de este estilo y no me funciona. No me manda ningún documento adjunto.
Alguien puede ayudarme por favor?????? :oops:

Por naiara

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Feb 2009 04:03 am

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 24 Feb 2009 10:22 am
Muchas gracias, pero yo estaba intentando implementarlo yo pero no encuentro nada útil :(

Por naiara

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Feb 2009 12:33 pm
Ya conseguí que me funcionara, pero ahora tengo otro problema, y es que no me acepta el código HTML. Si pongo etiquetas HTML en el contenido del e-mail me las muestra tal cual. Os dejo el código:

Código :

$mensaje = "<html><head><title>$asunto</title></head><body style='font-family:Arial, Helvetica, sans-serif; font-size:0.8em'>";
$mensaje.= "<p>Estimado Suscritor:</p>";
$mensaje.= $mensaj;
$mensaje.= "<p>Atentamente: Naiara</p>";
$mensaje.= "</body></html>";
         
if($adjunt != "")
{
   $file = fopen($_FILES['adjunto']['tmp_name'], "r"); 
   $contenido = fread($file, filesize($_FILES['adjunto']['tmp_name'])); 
   $encoded_attach = chunk_split(base64_encode($contenido)); 
   fclose($file);
            
        $cabeceras = "From: MiCorreo | <[email protected]>\n"; 
   //$cabeceras .= "Reply-To: $email\n"; 
   $cabeceras .= "MIME-version: 1.0\n"; 
   $cabeceras .= "Content-type: multipart/mixed; "; 
   $cabeceras .= "boundary=\"Message-Boundary\"\n"; 
   $cabeceras .= "Content-transfer-encoding: 7BIT\n"; 
   $cabeceras .= "X-attachments: ".$_FILES['adjunto']['tmp_name']; 
            
   $body_top = "--Message-Boundary\n"; 
   $body_top .= "Content-type: text/plain; charset=US-ASCII\n"; 
   $body_top .= "Content-transfer-encoding: 7BIT\n"; 
   $body_top .= "Content-description: Mail message body\n\n"; 
             
   $cuerpo = $body_top.$mensaje; 
            
   $cuerpo .= "\n\n--Message-Boundary\n"; 
   $cuerpo .= "Content-type: ".$_FILES['adjunto']['type']."; name=\"".$_FILES['adjunto']['name']."\"\n";
   $cuerpo .= "Content-Transfer-Encoding: BASE64\n"; 
   $cuerpo .= "Content-disposition: attachment; filename=\"".$_FILES['adjunto']['name']."\"\n\n";
   $cuerpo .= "$encoded_attach\n"; 
   $cuerpo .= "--Message-Boundary--\n"; 
}
else
{
   $cabeceras = "MIME-Version: 1.0\r\n";
   $cabeceras.= "Content-type: text/html; charset=iso-8859-1\r\n"; 
   //dirección del remitente
   $cabeceras.= "From: MiCorreo | <[email protected]>\r\n"; 
   $cuerpo = $mensaje;
}
         
$contador = 0;
         
for($i=0; $i<count($array_c); $i++)
{
   $destinatario = $array_c[$i];            
   if(mail($destinatario, $asunto, $cuerpo, $cabeceras)) $contador++;
}
         
if($contador == count($n_email)) echo "Se han enviado todos los E-Mails con &Eacute;xito";
else echo "NO se han podido ENVIAR todos los E-Mails";


Si alguien pudiera ayudarme por favor. Muchas gracias. :oops:

Por naiara

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Feb 2009 04:27 pm
Saludos compadres

Como promotor de las buenas costumbres le digo que les es mas eficiente, y facil de manejar correos si lo hacen utilizando PHPMailer ademas que podes colgarte de un servidor smtp establecido o de gmail en su defecto!

venga dejad el miedo y aprended a leer sobre PHPMailer

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.