Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/01/2005, 08:15
Anarko
 
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!.