Foros del Web » Programando para Internet » PHP »

Comberti un file en una cadena MIME, ahora como la envio por mail?.

Estas en el tema de Comberti un file en una cadena MIME, ahora como la envio por mail?. en el foro de PHP en Foros del Web. Cordial saludo, Hice esto: Código PHP: # Proceso del archivo adjunto:      if(!empty( $_FILES [ 'archivo' ]) AND !empty( $_FILES [ 'archivo' ][ 'name' ])){      $file = $_FILES [ 'archivo' ...
  #1 (permalink)  
Antiguo 27/01/2005, 08:15
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Comberti un file en una cadena MIME, ahora como la envio por mail?.

Cordial saludo,

Hice esto:
Código PHP:
# Proceso del archivo adjunto:
    
if(!empty($_FILES['archivo']) AND !empty($_FILES['archivo']['name'])){
    
$file=$_FILES['archivo']['tmp_name'];
    if(
is_uploaded_file($file))move_uploaded_file($file,$_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/'.$_FILES['archivo']['name']);

    function 
EncodeString ($str$encoding "base64") {
        
$encoded "";
        switch(
strtolower($encoding)) {
          case 
"base64":
              
// chunk_split is found in PHP >= 3.0.6
              
$encoded chunk_split(base64_encode($str), 76);
              break;
          case 
"7bit":
          case 
"8bit":
              
$encoded $this->FixEOL($str);
              if (
substr($encoded, -(strlen($this->LE))) != $this->LE)
                
$encoded .= $this->LE;
              break;
          case 
"binary":
              
$encoded $str;
              break;
          case 
"quoted-printable":
              
$encoded $this->EncodeQP($str);
              break;
          default:
              
$this->SetError($this->Lang("encoding") . $encoding);
              break;
        }
        return 
$encoded;
    }

    function 
EncodeFile ($path$encoding "base64") {
        if(!@
$fd fopen($path"rb")){echo 'Error'; exit;}
        
$file_buffer fread($fdfilesize($path));
        
$file_buffer EncodeString($file_buffer$encoding);
        
fclose($fd);
        return 
$file_buffer;
    }
    
$qqq=EncodeFile($_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF']).'/'.$_FILES['archivo']['name']);
Echo 
$qqq
Desde un form con campo file de nombre archivo envio la imagen.

Las cabeceras del mail to2 las conocemos...

Código PHP:
    $encoding='base64';
    @
mail(Mi Nombre <mico@yahoo.com>',$asunto,$mensaje,"Mime-Version: 1.0\nContent-type: $tipo\nFrom: $remite <$desde>\nReply-To: $remite <$desde>\nX-Mailer: PHP\nErrors-To: $remite <$desde>\nContent-Type: application/octet-stream; name=".$_FILES['archivo']['name']."\nContent-Transfer-Encoding: $encoding\nContent-Description: ".$_FILES['archivo']['name']."\nContent-Disposition: attachment; filename=".$_FILES['archivo']['name]."\n$qqq");} 
Y me llega a yahoo todo buenito... Sale el clip de papeles inclusive, el correo pesa un monton de KB, (los KB del file), pero al abrir el mail esta en blanco: Ni mensaje ni file a pesar de que pesa xxx KB.

Que hago?, es correcto enviar $qqq al final de mail() sin colocar una cabecera como datos=$qqq ?.

No vamos a reinventar como generar un PDF si ya esta la clase o la funcion, etc, pero mi pregunta es es demasiado lo que falta para enviar el file?, o solo es cosa de XXX y ya queda bueno el script?

Nota: (El file se ha subido exitosamente).
Salu2!.
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 19:31.