пОСЫЛКА аТАЧМЕНТА в пОСТЕ!!!

kdk

TeaM PHPClub
пОСЫЛКА аТАЧМЕНТА в пОСТЕ!!!

Прооблема такая: на сервере генериься pdf файл с некоторой информацией... После этого этот pdf файл должен посылаться на мыло...

Перепробывал кучу способов, но так ничего и не заработало

Максимум чего я добился - это присылается письмо в котором только первые 248 байт от pdf-ного файла...
Вот код который я использую:

PHP:
$message = "Dear ".$Name.",\r\n\r\n";
$message .= "Attached is the file  containing  the address(es), you requested, in  PDF format.\r\n";
$message .= "It can be opened using Adobe Acrobat Reader.\r\n\r\n";
$message .= "Thank you\nScanna Team\r\n";
$message .= "http://www.scanna.com\r\n";
$message .= "mailto: [email][email protected][/email]";

$boundary = "b".md5(uniqid(time()));

$mime = "From: scanna.com <[email protected]>\r\n";
$mime .= "X-Sender: <[email protected]>\r\n"; 
$mime .= "X-Mailer: PHP [url]http://kdk.ru\r\n[/url]";
$mime .= "Return-Path: <[email protected]>\r\n";
$mime .= "Content-type: multipart/mixed; ";
$mime .= "boundary = ".$boundary."\r\n\r\n";
$mime .= "This is a multi-part message in MIME format.\r\n\r\n";
$mime .= "--".$boundary."\r\n";
$mime .= "Content-type: text/plain;\r\n";
$mime .= "Content-Transfer-Encoding: base64\r\n\r\n";
$mime .= chunk_split(base64_encode($message))."\r\n";

$mime .= "--".$boundary."\r\n";
$mime .= "Content-type: application/pdf; name=\"".$OrderID.".pdf\"\r\n";
$mime .= "Content-Transfer-Encoding: binary\r\n\r\n";

$filename = "e:\\wwwsites\\orders\\".$OrderID.".pdf";
$fp = fopen($filename, 'rb');
$mime .= fread($fp, filesize ($filename));
fclose ($fp);

$mime .= "--".$boundary."\r\n\r\n";

$recipient = $order->Name." <".$order->email.">";
$subject = "Address Order from Scanna.";

if (mail($recipient, $subject, "", $mime)) 
	echo "Message was sent successful.";
else echo "Message was not sent!!!";
PS при попытке закодироваь pdf в base64 - файл кодируется, но php-шка толи виснет на строке с командой mail, толи еще что-то происходи в итоге выдается сообщение:

CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:

PPS Большая просьба не писать что эту тему давно разжевали и все такое, т.к. перепробовал уже много описанных и в форуме и в книгах и у ДИМЫ (php.spb.ru) способов!!!

С НАДЕЖНОЙ НА ПОМОЩЬ!!!
 

DiMA

php.spb.ru
Команда форума
$mime .= "--".$boundary."rnrn";

это что такое? не r, а \r

какого размер файл?
 

kdk

TeaM PHPClub
Автор оригинала: DiMA
$mime .= "--".$boundary."rnrn";
это что такое? не r, а \r
какого размер файл?
на самом деле там было \r\n, это некоторые слеши форум съел...
пробовал и просо \n, но разници никакой...

pdf-файл размера от 60 kb и больше...
 

DiMA

php.spb.ru
Команда форума
ну, если файл (пдф) до 100Кб, пришли его мне по мыло. И ты убедишься, что на пхп.спб.ру все работает. Это проверено годами.
 

kdk

TeaM PHPClub
Автор оригинала: DiMA
ну, если файл (пдф) до 100Кб, пришли его мне по мыло. И ты убедишься, что на пхп.спб.ру все работает. Это проверено годами.
я пробовал использовать описанный тобой метод...
скрипт отрабатывает и не выдает каких либо ошибок, но ничего по почте не приходит...

я посмотрел в логах нашего почтового сервера и нашел запись про эту попытку отправить письмо - вида ошибка 10053...

я думаю этот метод не работает из-за того что там подключение к сокету, которое перекрывается в почтовом сервере из соображений безопасности...

хотя я не уверен что причина в этом...

PS файл сейчас кину по почте...
 

DiMA

php.spb.ru
Команда форума
как и ожидалось - твой файл пришел с первого раза:
PHP:
  $mail=new html_mime_mail();
  $mail->add_html("<html><body><center><h2>Пpивет!<br><br>".
                  "<br>Посылаю двоичный файл [/bin/ls] ...".
                  "</h2></center></body></html>");
  $mail->add_attachment("./","1.pdf");
  $mail->build_message('k'); // если не "win", то кодиpовка koi8
  $mail->send('php.spb.ru',
              'dima @ php.spb.ru',
              'dima @ php.spb.ru',
              'ТЕМА ПИСЬМА');
 

DiMA

php.spb.ru
Команда форума
+ из под винды тоже пришло (при запуске php.exe)
+ отослал тебе копию
 

DiMA

php.spb.ru
Команда форума
ну так где же ты, дорогой? Громче всех кричал, просил помочь...
 

kdk

TeaM PHPClub
Автор оригинала: DiMA
ну так где же ты, дорогой? Громче всех кричал, просил помочь...
Я уже писал что пробовал так делать... :rolleyes:
вот что выдает на такую попытку наш smtp-шник:


Sun 2002-02-17 08:27:30: ----------
Sun 2002-02-17 08:28:39: [368:206] Accepting SMTP connection from IP-адрес
Sun 2002-02-17 08:28:39: [368:206] 220 IP-адрес ESMTP MDaemon 3.5.0 ready
Sun 2002-02-17 08:28:39: [368:206] Receive buffer error, aborting. Message cannot be delivered.
Sun 2002-02-17 08:28:39: ----------



PS IP-адрес - ip-шник нашего сервера...

а если не через сокет соединяться, то mail() присылает только кусок файла :confused:

пока единственное решение которое нашел для эого сервера это использовать asp...
 
Сверху