Мартынов Семён Андреевич уж будь любезен попробуй, а на досуге почитай про отправку писем ... заголовки, протокол POP и SMTP
Результаты: Когда отправляю без аттача - белый экран. Доставки как-то нет... С аттачем - Код (Text): Warning: fopen(1.bmp) [function.fopen]: failed to open stream: No such file or directory in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 147 Warning: filesize() [function.filesize]: stat failed for 1.bmp in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 147 Warning: fread(): supplied argument is not a valid stream resource in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 147 а у fopen(1.bmp) так и должно быть? Я думал должно быть что-то типа fopen(C:\Documents and Settings\1\Рабочий стол\1.bmp)...
Мартынов Семён Андреевич старик ... у тебя проблемы не с отправкой писем, а с понимаением как все работает в принципе ... с пониманием нотисов и прочей информации, любезно предоставляемой интерпретаром PHP. почитай про абсолютные и относительные пути хотя бы ...
я то откуда знаю что там понаписано?????? p.s. а нахрена ему утягивать почту во временную папку. как я понимаю все это он сразу на лету, все подсовываемые ему файлы, кодирует и строит MIME для письма.
Мартынов Семён Андреевич а выдать print_r($_FILES)) н пробовал? таа все есть и пути и имена ... 8) вот. попробуй ... http://440hz.ru/trash/upload/ PHP: <? if(isset($_FILES['userfile'])) { print('<pre>'); print_r($_FILES['userfile']); } ?> <html> <body> <form method=POST ENCTYPE='multipart/form-data'> <input type=file name=userfile> <input type=submit value=" загрузить"> </form> </body> </html>
Так, теперь у меня так Код (Text): <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Отправка письма</title> <meta content="text/html;charset=windows-1251" http-equiv="Content-Type"> <style> a { text-decoration: underline; color:#0000FF; } </style> </head> <body> <? //php_value error_reporting 7 $mailto="sam@uagp.net";//определяем, куда будут сыпаться мессаги if (empty($ok))//Если не нажата кнопка O.k., то { ?> <script type="text/javascript" src="http://www.uagp.net/includes/js/overlib_mini.js"></script> <h3>Отправить сообщение об ошибке</h3> Поля, отмеченные ( <a href="#" onmouseover="return overlib('Поле обязательно для заполнения!!!', BELOW, RIGHT);" onmouseout="return nd();" >*</a> ), обязательны для заполнения. <br><br> <form action="<?echo $PHP_SELF;?>" method="post"> <style> a { text-decoration: none; color:#000000; } </style> <table> <tr> <td>Ваше имя:</td> <td> <input type="text" name="username" size="50" maxlength="50"></td> </tr> <tr> <td><a href="#" onmouseover="return overlib('Поле обязательно для заполнения!!!', BELOW, RIGHT);" onmouseout="return nd();" >*</a> E-mail:</td> <td><input type="text" name="mailfrom" size="50" maxlength="50"></td> </tr> <tr> <td><a href="#" onmouseover="return overlib('Поле обязательно для заполнения!!!', BELOW, RIGHT);" onmouseout="return nd();" >*</a> Замечание:</td> <td><textarea cols="50" rows="10" name="question"></textarea></td> </tr> <tr> <td>Вложение:</td> <td><input type="file" name="attach" size="37"><a href="#" onmouseover="return overlib('По умолчанию, это С:\\file.txt', BELOW, RIGHT);" onmouseout="return nd();" ><img src="http://www.uagp.net/includes/js/ThemeOffice/tooltip.png" border="0" alt=""/></a></td> </tr> </table> <input type="submit" name="ok" value="отправить"> </form> <?php } else { if(isset($_FILES['attach'])) { print('<pre>'); print_r($_FILES['attach']);} //проверка корректности е-мэйла if(empty($mailfrom)) { $error = "Не заполнено поле: <b>E-mail</b><br>"; } else { if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mailfrom)) { $error = "Не верно заполнено поле: <b>E-mail</b><br>"; } } //если "замечание" не заполнено, то if (empty($question)) { if (empty($error)) { $error = "Не заполнено поле: <b>Ваш вопрос</b><br>"; } else { $error .= "Не заполнено поле: <b>Ваш вопрос</b><br>"; } } //если переменная $error не пуста, то выводим её содержимое и выходим. if (!empty($error)) { echo "<p align=\"center\">"; echo $error; //echo "<br><a href=\"javascript:history.go(-1)\" class=\"text\">Вернуться назад</a>"; echo "<a href=\"javascript:history.go(-1)\" onmouseover=\"return overlib('Нажмите для возврата к форме отправки письма', BELOW, RIGHT);\" onmouseout=\"return nd();\" >Вернуться назад</a>"; echo "<p>"; exit; } //если $error пуста, то переходим к отправке сообщения class mime_mail { var $parts;//массив для вложений var $to;//получатель var $from;//отправитель var $headers;//заголовок var $subject;//тема var $body;//текст послания // создаем класс function mime_mail() { $this->parts = array(); $this->to = ""; $this->from = ""; $this->subject = ""; $this->body = ""; $this->headers = ""; } // функция добавления файлов в мыло function add_attachment($message, $name = "", $ctype = "application/octet-stream") { $encode = 'KOI8-R'; $this->parts [] = array ( "ctype" => $ctype, "message" => $message, "encode" => $encode, "name" => $name ); } // Построение сообщения (multipart) function build_message($part) { $message = $part["message"]; $message = chunk_split(base64_encode($message)); $encoding = "base64"; return "Content-Type: ".$part["ctype"].($part["name"]? "; name = \"".$part["name"]."\"" : "")."\nContent-Transfer-Encoding: $encoding\n\n$message\n"; } function build_multipart() { $boundary = "b".md5(uniqid(time())); $multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary"; for($i = sizeof($this->parts)-1; $i>=0; $i--) $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary"; return $multipart.= "--\n"; } // функция "посылка сообщения" function send() { $mime = ""; if (!empty($this->from)) $mime .= "From: ".$this->from. "\n"; if (!empty($this->headers)) $mime .= $this->headers. "\n"; if (!empty($this->body)) $this->add_attachment($this->body, "", "text/plain"); $mime .= "MIME-Version: 1.0\n".$this->build_multipart(); mail($this->to, $this->subject, "", $mime); } } //формирование сообщения и его отправка if (!empty($attach)) { $attachment = fread(fopen("$attach", "r"), filesize("$attach")); } $mail = new mime_mail(); $mail->from = $mailfrom; $mail->headers = "Errors-To: sam@uagp.net"; $mail->to = $mailto; $mail->subject = "Сообщение с сайта http://www.uagp.net об ошибке в программе!"; $mail->body = $question; if (!empty($attach)) { $mail->add_attachment("$attachment", "$attach", "Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAgEASABIAAD/7QT+UGhvdG9zaG"); } $mail->send(); if ($mail) { echo "<p align=\"center\">Спасибо. Ваше замечание отправлено.<br><br>"; echo "<a href=\"http://www.uagp.net\" onmouseover=\"return overlib('Нажмите для перезода на главную страницу сайта предприятия', BELOW, RIGHT);\" onmouseout=\"return nd();\" >ФГУП УРАЛАЭРОГЕОДЕЗИЯ</a>"; //echo "<a href=\"http://www.uagp.net\">ФГУП УРАЛАЭРОГЕОДЕЗИЯ</a></p>"; } } ?> </body> </html> При отправке без файла - всё О.к., и доставка! при отправке с файлом - Код (Text): Warning: fopen(1.bmp) [function.fopen]: failed to open stream: No such file or directory in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 166 Warning: filesize() [function.filesize]: stat failed for 1.bmp in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 166 Warning: fread(): supplied argument is not a valid stream resource in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 166 Спасибо. Ваше замечание отправлено. ФГУП УРАЛАЭРОГЕОДЕЗИЯ А файл приходит в нечитаемом виде...
у меня истерика )))))) товарисч, а может вы все же почитаете документацию к РНР, например: как работать с переменными, как обращаться к переменным запроса? и еще одно - если берете чужой код, и не можете в нем разобраться, так хоть не меняйте его! Я почти уверен, что вслед за этим варнингом с файлом пойдут другие...
это концептуально! PHP: <? if (empty($error)) { $error = "Не заполнено поле: <b>Ваш вопрос</b><br>"; } else { $error .= "Не заполнено поле: <b>Ваш вопрос</b><br>"; } ?>