аттач 690 байт, почему?

Andrey_P

Guest
аттач 690 байт, почему?

Здравствуйте.

Делаю аттач к письму размером 600кб, а доходит аттач 690байт, мож кто встречался с такой проблемой?

Конфиг: win98-apache1.3.27-php4.2.3-sendmail1.5

Всем заранее спасибо.
 

Andrey_P

Guest
mail()

конкретно код был с форума взят вот он:

PHP:
<?php 
Error_Reporting(3); 
$files_path="C:/"; 
$attachment_file="test.exe"; 
$subject = "test"; 
$toWhom = "[email protected]"; 
$body = "my letter\n"; 

$bound = "----=_".uniqid("MailRobot")."="; 
$header =  "MIME-Version: 1.0\n". 
                "Content-Type: multipart/mixed; boundary=\"$bound\"\n". 
                "From: Andrey <[email protected]>\n". 
                "Status: \n". 
                "X-Mailer: Mail Robot\n"; 
$content = "--".$bound."\n". 
        "Content-Type: text/plain; charset=\"koi8-r\"\n". 
        "Content-Transfer-Encoding: 8bit\n\n". 
        $body."\n"; 
$end = "\n"."--".$bound."--\n"; 
$attachment_header = "--".$bound."\n". 
        "Content-Type: application/octet-stream; name=\"$attachment_file\"\n". 
        "Content-Transfer-Encoding: base64\n". 
        "Content-Disposition: attachment; filename=\"$attachment_file\"\n\n"; 
$attachment_body = ""; 
$openfile = $files_path.$attachment_file; 
$fp = fopen ("$openfile", "r"); 
if ($fp) 
{ 
  $binary = fread($fp, filesize($openfile)); 
  $datalen = strlen($data =base64_encode($binary)); 
  for ($posted = 0, $cutlen = 64; $posted <$datalen; $posted+=$cutlen) 
  { 
    if ($posted + $cutlen > $datalen) $cutlen = $datalen - $posted; 
    $attachment_body .=substr($data, $posted, $cutlen)."\n"; 
  } 
  fclose ($fp); 
} 
$message= $content . $attachment_header . $attachment_body . $end; 
$success = mail($toWhom, $subject, $message, $header); 
if (success) {echo "OK";} else {echo "Something wrong";} 
?>
 

Barlone

Guest
1. Во второй параметр openfile добавь b:
PHP:
$fp = fopen ("$openfile", "rb");
2. Зачем нужен цикл ? Можно проще:
PHP:
$attachment_body = chunk_split(base64_encode($binary));
 

Andrey_P

Guest
Всем спасибо.
Проблему нашёл.
Надо атрибуты для fopen не "r", а "rb" ставить, тогда всё нормально.
"r" - для текстовых файлов
"rb" - бинарники
 

Andrey_P

Guest
to Barlone:
спасибо, за помощь я уже сам догнал
 

NightHunter

Guest
подскажите, а почему тогда пропадает описание текстовой части сообщения ("Content-Type: text/plain; charset=\"koi8-r\"\n". )

т.е. приходит следующее:

....
To: [email protected]
Subject: MySQLdump: Monday 17th of November 2003 12:05:00 AM
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_MailRobot3fb7e67ca1ced="
From: WEB-master <[email protected]>
Status:
X-Mailer: Mail Robot

текст письма

....
 

NightHunter

Guest
спасибо...
но я не понял, где взять PEAR.php и mail.php ???

подскажите, чтобы не рыться...
 
Сверху