Php

Tume enviaste este script
enviar envia pero el archivo adjunto llega con errores no se sabe que archivo es tampoco se puede abrir
gracias por tu ayuda
no se donde esta el error.
***************
<?php
if ($mandar)
{
class CMailFile
{
var $subject;
var $addr_to;
var $text_body;
var $text_encoded;
var $mime_headers;
var $mime_boundary = "--==================_846811060==_";
var $smtp_headers;
function CMailFile($subject,$to,$from,$msg,$filename,$mimetype = "application/octet-stream", $mime_filename = false)
{
$this->subject = $subject;
$this->addr_to = $to;
$this->smtp_headers = $this->write_smtpheaders($from);
$this->text_body = $this->write_body($msg);
$this->text_encoded = $this->attach_file($filename,$mimetype,$mime_filename);
$this->mime_headers = $this->write_mimeheaders($filename, $mime_filename);
}
function attach_file($filename,$mimetype,$mime_filename)
{
$encoded = $this->encode_file($filename);
if ($mime_filename)
$filename = $mime_filename;
$out = "--" . $this->mime_boundary . "\n";
$out = $out . "Content-type: " . $mimetype . "; name=\"$filename\";\n";
$out = $out . "Content-Transfer-Encoding: base64\n";
$out = $out . "Content-disposition: attachment; filename=\"$filename\"\n\n";
$out = $out . $encoded . "\n";
$out = $out . "--" . $this->mime_boundary . "--" . "\n";
return $out;
}
function encode_file($sourcefile)
{
if (is_readable($sourcefile))
{
$fd = fopen($sourcefile, "r");
$contents = fread($fd, filesize($sourcefile));
$encoded = my_chunk_split(base64_encode($contents));
fclose($fd);
}
return $encoded;
}
function sendfile()
{
$headers = $this->smtp_headers . $this->mime_headers;
$message = $this->text_body . $this->text_encoded;
mail($this->addr_to,$this->subject,$message,$headers);
}
function write_body($msgtext)
{
$out = "--" . $this->mime_boundary . "\n";
$out = $out . "Content-Type: text/plain; charset=\"us-ascii\"\n\n";
$out = $out . $msgtext . "\n";
return $out;
}
function write_mimeheaders($filename, $mime_filename)
{
if ($mime_filename)
$filename = $mime_filename;
$out = "MIME-version: 1.0\n";
$out = $out . "Content-type: multipart/mixed; ";
$out = $out . "boundary=\"$this->mime_boundary\"\n";
$out = $out . "Content-transfer-encoding: 7BIT\n";
$out = $out . "X-attachments: $filename;\n\n";
return $out;
}
function write_smtpheaders($addr_from)
{
$out = "From: $addr_from\n";
$out = $out . "Reply-To: $addr_from\n";
$out = $out . "X-Mailer: PHP3\n";
$out = $out . "X-Sender: $addr_from\n";
return $out;
}
}
function my_chunk_split($str)
{
$stmp = $str;
$len = strlen($stmp);
$out = "";
while ($len > 0)
{
if ($len >= 76)
{
$out = $out . Substr($stmp, 0, 76) . "\r\n";
$stmp = substr($stmp, 76);
$len = $len - 76;
}
else
{
$out = $out . $stmp . "\r\n";
$stmp = ""; $len = 0;
}
}
return $out;
}
$mailfile = new CMailFile($subject,$sendto,$replyto,$message,$filename,$filename_type);
$mailfile->sendfile();
}
else
{
?>
<html>
<body>
<form name="datosmail" method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
<br>Asunto:<br>
<input type="text" name="subject" maxlength="40">
<br>A:<br>
<input type="text" name="sendto" maxlength="40">
<br>Remitente:<br>
<input type="text" name="replyto" maxlength="40">
<br>Mensaje:<br>
<textarea name="message" rows=4 cols=35 wrap></textarea>
<br>Attach:<br>
<input type="file" name="filename" size="40"><br>
<input type="submit" name="mandar" value="Mandar Mail">
<?
}
?>
</form></body>
</html>

1 Respuesta

Respuesta
1
Hi de nuevo,
Mira, el script esta bastante probado y a mi no me arroja errores y los archivos llegan perfectamente.
Lo que te puede estar pasando es que los archivos que estas mandando no se trasformen de la manera correcta en el destino. Esto puede ser debido a que no tengas una entrada en las tablas MIME para este tipo de archivo.
Acordate que los datos son mandados en binario puro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas