ФорумПрограммированиеPHP для идиотов → сообщения с вложениями

сообщения с вложениями

  • nemiroff9999

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz Март 10, 2008, 11:58 д.п.

    Всем привет. Есть у меня БД электронных книг, т.е. пока только инфо о них: название книги, ее автор, год издания и т.п. Я создал страничку(download.php), на которую пользователь попадает нажав на кнопку “Скачать”. Здесь я отправляю ему обычное письмо, а хотелось бы прикрепить еще архив (электронный вариант этой книги). Как это сделать? На данный момент у меня есть следующее:
    ——————download.php—————
    <?php
    include "config.php";
    echo "<br><br>";
    if ($id!=0)
    {$ath = mysql_query("select * from books where Code=$id;");};
    echo "<form action='mail1.php' method=POST>";
    echo "<table border=0>";
    echo "<td><IMG src='pictures/01.jpg' border=0></td>";
    echo "<tr><td>для загрузки книги ведите свой e-mail:</td></tr>";
    echo "<td><input type='text' maxlength=50 size=30 name='email'></td>";
    echo "<td><input type='submit' value='Загрузка'></td>";
    echo "</table>";
    if ($ath)
    {
    echo "<br><br><table border=1 width='100%' bgcolor=ffffcc>";
    echo "<tr><td>Название</td><td>Автор</td><td>Описание</td><td>Кафедра</td><td>Издательство</td><td>Год</td><td>Скачать</td></tr>";
    while($news = mysql_fetch_array($ath))
    {
    echo "<tr><td><font size=3>".$news['Name_book']."&nbsp;</font></td>";
    echo "<td><font size=3>".$news['Avtor']."&nbsp;</font></td>";
    echo "<td align=right><font size=3>".$news['Description']."&nbsp;</font></td>";
    echo "<td align=right><font size=3>".$news['Pulpit']."&nbsp;</font></td>";
    echo "<td align=right><font size=3>".$news['Publishers']."&nbsp;</font></td>";
    echo "<td align=right><font size=3>".$news['Year']."&nbsp;</font></td>";
    echo "<td align=center><font size=2>".$news['Download']."&nbsp;</font></td></tr>";
    }
    echo "</table>";
    }
    echo "</form>";
    ?>



    ——————mail1.php—————
    <?php
    $email=$_POST['email'];
    echo "<table>";
    echo "<tr><a href='mailto:$email?subject=REPORT'>Отправить</a></tr></table>";
    ?>
  • md5

    Сообщения: 11960 Репутация: N Группа: в ухо

    Spritz Март 10, 2008, 12:28 п.п., спустя 29 минут 43 секунды

    не вижу отправки письма.

    ссылка
    <a href='mailto:$email?subject=REPORT'>

    откроет почтовую программу пользователя… непонятно вобще что за бардак.
    для отправки письма с вложениями и без использую phpmailer и не парюсь
    все умрут, а я изумруд
  • sap

    Сообщения: 2701 Репутация: N Группа: Кто попало

    Spritz Март 10, 2008, 5:11 п.п., спустя 4 часа 42 минуты 52 секунды

    Для несложных случаев юзаю вот такую функцию:

    function send_mail_with_attach($mailto, $theme, $html_text, $path)
    {
    if ($path) {
    $f = fopen($path,"rb");
    if (!$f) {
    die ("Cannot open file");
    }
    $file = fread($f, filesize($path));
    fclose($f);
    }

    $filename = $_FILES['mail_file']['name'];

    $end_of_string = "\n";
    $boundary = "–".md5(uniqid(time()));

    $headers = "MIME-Version: 1.0;$end_of_string";
    $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$end_of_string";
    $headers .= "From: [email protected]";

    $multipart = "–$boundary$end_of_string";
    $multipart .= "Content-Type: text/html; charset=windows-1251$end_of_string";
    $multipart .= "Content-Transfer-Encoding: base64$end_of_string";
    $multipart .= $end_of_string;
    $multipart .= chunk_split(base64_encode($html_text));
    $multipart .= "$end_of_string–$boundary$end_of_string";
    $multipart .= "Content-Type: application/octet-stream; name=\"$filename\"$end_of_string";
    $multipart .= "Content-Transfer-Encoding: base64$end_of_string";
    $multipart .= "Content-Disposition: attachment; filename=\"$filename\"$end_of_string";
    $multipart .= $end_of_string;
    $multipart .= chunk_split(base64_encode($file));
    $multipart .= "$end_of_string–$boundary–$end_of_string";

    if (!mail($mailto, $theme, $multipart, $headers))
    return false;
    else
    return true;
    }

Пожалуйста, авторизуйтесь, чтобы написать комментарий!