За последние 24 часа нас посетили 22895 программистов и 1311 роботов. Сейчас ищут 927 программистов ...

Варинги и Нотисы при попытке отправить сообщение с аттачем.

Тема в разделе "Работа с почтой", создана пользователем Мартынов Семён Андреевич, 2 май 2006.

  1. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Мартынов Семён Андреевич
    уж будь любезен попробуй, а на досуге почитай про отправку писем ... заголовки, протокол POP и SMTP
     
  2. Мартынов Семён Андреевич

    Мартынов Семён Андреевич Активный пользователь

    С нами с:
    2 май 2006
    Сообщения:
    19
    Симпатии:
    0
    Результаты:
    Когда отправляю без аттача - белый экран. Доставки как-то нет...
    С аттачем -
    Код (Text):
    1.  
    2. 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
    3.  
    4. Warning: filesize() [function.filesize]: stat failed for 1.bmp in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 147
    5.  
    6. 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)...
     
  3. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Мартынов Семён Андреевич
    старик ... у тебя проблемы не с отправкой писем, а с понимаением как все работает в принципе ...

    с пониманием нотисов и прочей информации, любезно предоставляемой интерпретаром PHP.

    почитай про абсолютные и относительные пути хотя бы ...
     
  4. Мартынов Семён Андреевич

    Мартынов Семён Андреевич Активный пользователь

    С нами с:
    2 май 2006
    Сообщения:
    19
    Симпатии:
    0
    Я так понимаю он почту перед отправкой во временную папку утягивает?
     
  5. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    я то откуда знаю что там понаписано??????

    p.s. а нахрена ему утягивать почту во временную папку. как я понимаю все это он сразу на лету, все подсовываемые ему файлы, кодирует и строит MIME для письма.
     
  6. Мартынов Семён Андреевич

    Мартынов Семён Андреевич Активный пользователь

    С нами с:
    2 май 2006
    Сообщения:
    19
    Симпатии:
    0
    Просто мне интересно <input type="file"> даёт только имя файла или по нормальному путь к нему?
     
  7. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Мартынов Семён Андреевич


    а выдать print_r($_FILES)) н пробовал? таа все есть и пути и имена ... 8)

    вот. попробуй ...

    http://440hz.ru/trash/upload/


    PHP:
    1. <?
    2.  
    3. if(isset($_FILES['userfile'])) {
    4.     print('<pre>');
    5.     print_r($_FILES['userfile']);
    6. }
    7.  
    8. ?>
    9. <html>
    10. <body>
    11. <form method=POST ENCTYPE='multipart/form-data'>
    12. <input type=file name=userfile>&nbsp;<input type=submit value=" загрузить">
    13. </form>
    14. </body>
    15. </html>
    16.  
     
  8. Мартынов Семён Андреевич

    Мартынов Семён Андреевич Активный пользователь

    С нами с:
    2 май 2006
    Сообщения:
    19
    Симпатии:
    0
    Это отдельно кнопку "прикрепить" пикручивать?..
     
  9. Мартынов Семён Андреевич

    Мартынов Семён Андреевич Активный пользователь

    С нами с:
    2 май 2006
    Сообщения:
    19
    Симпатии:
    0
    Тогда в чём же проблема если он фаил видит по нормальному?..
     
  10. Мартынов Семён Андреевич

    Мартынов Семён Андреевич Активный пользователь

    С нами с:
    2 май 2006
    Сообщения:
    19
    Симпатии:
    0
    Так, теперь у меня так
    Код (Text):
    1.  
    2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    3. <html>
    4. <head>
    5.     <title>Отправка письма</title>
    6.     <meta content="text/html;charset=windows-1251" http-equiv="Content-Type">
    7.     <style>
    8.     a
    9.     {
    10.         text-decoration: underline;
    11.         color:#0000FF;
    12.     }
    13.     </style>
    14. </head>
    15. <body>
    16. <?
    17. //php_value error_reporting 7
    18. $mailto="sam@uagp.net";//определяем, куда будут сыпаться мессаги
    19. if (empty($ok))//Если не нажата кнопка O.k., то
    20. {
    21. ?>
    22.     <script  type="text/javascript" src="http://www.uagp.net/includes/js/overlib_mini.js"></script>
    23.     <h3>Отправить сообщение об ошибке</h3>
    24.     Поля, отмеченные ( <a href="#" onmouseover="return overlib('Поле обязательно для заполнения!!!', BELOW, RIGHT);" onmouseout="return nd();" >*</a> ), обязательны для заполнения.
    25.     <br><br>
    26.     <form action="<?echo $PHP_SELF;?>" method="post">
    27.     <style>
    28.     a
    29.     {
    30.            text-decoration: none;
    31.            color:#000000;
    32.     }
    33.     </style>
    34.     <table>
    35.     <tr>
    36.         <td>Ваше имя:</td>
    37.         <td> <input type="text" name="username" size="50" maxlength="50"></td>
    38.     </tr>
    39.     <tr>
    40.         <td><a href="#" onmouseover="return overlib('Поле обязательно для заполнения!!!', BELOW, RIGHT);" onmouseout="return nd();" >*</a> E-mail:</td>
    41.         <td><input type="text" name="mailfrom" size="50" maxlength="50"></td>
    42.     </tr>
    43.     <tr>
    44.         <td><a href="#" onmouseover="return overlib('Поле обязательно для заполнения!!!', BELOW, RIGHT);" onmouseout="return nd();" >*</a> Замечание:</td>
    45.         <td><textarea cols="50" rows="10" name="question"></textarea></td>
    46.     </tr>
    47.     <tr>
    48.         <td>Вложение:</td>
    49.         <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>
    50.     </tr>
    51.     </table>
    52.     <input type="submit" name="ok" value="отправить">
    53. </form>
    54.  
    55. <?php
    56. }
    57. else
    58. {
    59.    if(isset($_FILES['attach']))
    60.    {
    61.        print('<pre>');
    62.        print_r($_FILES['attach']);}
    63.  
    64.     //проверка корректности е-мэйла
    65.     if(empty($mailfrom))
    66.     {
    67.           $error = "Не заполнено поле: <b>E-mail</b><br>";
    68.     }
    69.     else
    70.     {
    71.           if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mailfrom))
    72.           {
    73.                 $error = "Не верно заполнено поле: <b>E-mail</b><br>";
    74.           }
    75.     }
    76.  
    77.     //если "замечание" не заполнено, то
    78.     if (empty($question))
    79.     {
    80.           if (empty($error))
    81.           {
    82.                $error = "Не заполнено поле: <b>Ваш вопрос</b><br>";
    83.           }
    84.           else
    85.           {
    86.                $error .= "Не заполнено поле: <b>Ваш вопрос</b><br>";
    87.           }
    88.     }
    89.  
    90.     //если переменная $error не пуста, то выводим её содержимое и выходим.
    91.     if (!empty($error))
    92.     {
    93.         echo "<p align=\"center\">";
    94.         echo $error;
    95.         //echo "<br><a href=\"javascript:history.go(-1)\" class=\"text\">Вернуться назад</a>";
    96.         echo "<a href=\"javascript:history.go(-1)\" onmouseover=\"return overlib('Нажмите для возврата к форме отправки письма', BELOW, RIGHT);\" onmouseout=\"return nd();\" >Вернуться назад</a>";
    97.         echo "<p>";
    98.         exit;
    99.     }
    100.  
    101.     //если $error пуста, то переходим к отправке сообщения
    102.     class mime_mail
    103.     {
    104.           var $parts;//массив для вложений
    105.           var $to;//получатель
    106.           var $from;//отправитель
    107.           var $headers;//заголовок
    108.           var $subject;//тема
    109.           var $body;//текст послания
    110.  
    111.           // создаем класс
    112.           function mime_mail()
    113.           {
    114.                  $this->parts = array();
    115.                  $this->to = "";
    116.                  $this->from = "";
    117.                  $this->subject = "";
    118.                  $this->body = "";
    119.                  $this->headers = "";
    120.           }
    121.  
    122.           // функция добавления файлов в мыло
    123.           function add_attachment($message, $name = "", $ctype = "application/octet-stream")
    124.           {
    125.                  $encode = 'KOI8-R';
    126.                  $this->parts [] = array
    127.                  (
    128.                         "ctype" => $ctype,
    129.                         "message" => $message,
    130.                         "encode" => $encode,
    131.                         "name" => $name
    132.                  );
    133.           }
    134.  
    135.           // Построение сообщения (multipart)
    136.           function build_message($part)
    137.           {
    138.                  $message = $part["message"];
    139.                  $message = chunk_split(base64_encode($message));
    140.                  $encoding = "base64";
    141.                  return "Content-Type: ".$part["ctype"].($part["name"]? "; name = \"".$part["name"]."\"" : "")."\nContent-Transfer-Encoding: $encoding\n\n$message\n";
    142.           }
    143.  
    144.           function build_multipart()
    145.           {
    146.                  $boundary = "b".md5(uniqid(time()));
    147.                  $multipart = "Content-Type: multipart/mixed; boundary = $boundary\n\nThis is a MIME encoded message.\n\n--$boundary";
    148.                  for($i = sizeof($this->parts)-1; $i>=0; $i--) $multipart .= "\n".$this->build_message($this->parts[$i]). "--$boundary";
    149.                  return $multipart.= "--\n";
    150.           }
    151.  
    152.           // функция "посылка сообщения"
    153.           function send()
    154.           {
    155.                  $mime = "";
    156.                  if (!empty($this->from)) $mime .= "From: ".$this->from. "\n";
    157.                  if (!empty($this->headers)) $mime .= $this->headers. "\n";
    158.                  if (!empty($this->body)) $this->add_attachment($this->body, "", "text/plain");
    159.                  $mime .= "MIME-Version: 1.0\n".$this->build_multipart();
    160.                  mail($this->to, $this->subject, "", $mime);
    161.           }
    162.     }
    163.  
    164.     //формирование сообщения и его отправка
    165.     if (!empty($attach))
    166.     {
    167.         $attachment = fread(fopen("$attach", "r"), filesize("$attach"));
    168.     }
    169.     $mail = new mime_mail();
    170.     $mail->from = $mailfrom;
    171.     $mail->headers = "Errors-To: sam@uagp.net";
    172.     $mail->to = $mailto;
    173.     $mail->subject = "Сообщение с сайта http://www.uagp.net об ошибке в программе!";
    174.     $mail->body = $question;
    175.     if (!empty($attach))
    176.     {
    177.         $mail->add_attachment("$attachment", "$attach", "Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAgEASABIAAD/7QT+UGhvdG9zaG");
    178.     }
    179.     $mail->send();
    180.  
    181.     if ($mail)
    182.     {
    183.         echo "<p align=\"center\">Спасибо. Ваше замечание отправлено.<br><br>";
    184.         echo "<a href=\"http://www.uagp.net\" onmouseover=\"return overlib('Нажмите для перезода на главную страницу сайта предприятия', BELOW, RIGHT);\" onmouseout=\"return nd();\" >ФГУП УРАЛАЭРОГЕОДЕЗИЯ</a>";
    185.         //echo "<a href=\"http://www.uagp.net\">ФГУП УРАЛАЭРОГЕОДЕЗИЯ</a></p>";
    186.     }
    187.  
    188. }
    189. ?>
    190.  
    191. </body>
    192.  
    193. </html>
    При отправке без файла - всё О.к., и доставка!
    при отправке с файлом -
    Код (Text):
    1.  
    2.  
    3. 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
    4.  
    5. Warning: filesize() [function.filesize]: stat failed for 1.bmp in /var/www/html/uagp.net/www/prod/2006/tagil/index.php on line 166
    6.  
    7. 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
    8.  
    9. Спасибо. Ваше замечание отправлено.
    10.  
    11. ФГУП УРАЛАЭРОГЕОДЕЗИЯ
    А файл приходит в нечитаемом виде...
     
  11. Мартынов Семён Андреевич

    Мартынов Семён Андреевич Активный пользователь

    С нами с:
    2 май 2006
    Сообщения:
    19
    Симпатии:
    0
  12. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Мартынов Семён Андреевич
    что?
     
  13. olo

    olo Активный пользователь

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    у меня истерика :)))))))
    товарисч, а может вы все же почитаете документацию к РНР, например: как работать с переменными, как обращаться к переменным запроса?
    и еще одно - если берете чужой код, и не можете в нем разобраться, так хоть не меняйте его! Я почти уверен, что вслед за этим варнингом с файлом пойдут другие...
     
  14. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    olo
    так мы тут и живем ... 8(
     
  15. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    это концептуально!
    PHP:
    1. <?
    2.           if (empty($error)) {
    3.                $error = "Не заполнено поле: <b>Ваш вопрос</b><br>";
    4.           } else {
    5.                $error .= "Не заполнено поле: <b>Ваш вопрос</b><br>";
    6.           }
    7. ?>