Кто поможет?

Discussion in 'PHP' started by saiman, 27 Dec 2008.

  1. saiman

    saiman Banned

    Joined:
    2 Dec 2005
    Messages:
    63
    Likes Received:
    5
    Reputations:
    -28
    Помогите! Нужен пхп для отправки писем в html с вложением. Киньте кто нить скрипт в личку или сюда. Заранее благодарин.
     
  2. saiman

    saiman Banned

    Joined:
    2 Dec 2005
    Messages:
    63
    Likes Received:
    5
    Reputations:
    -28
    Ну может кто поможет? Что сюда запихать что бы можно было присоединять файлы или картинки? Желательно, что бы можно было присоединять много файлов, а не один.
    PHP:
    <?
    if (@
    function_exists("mail"))
    {
    include 
    "config.php";
    ?>

    <?
    if (isset($_GET['send']) and isset($_POST['sform']))    
        {
    $to = trim($_POST['to']);
    if ($to != "")
    {
    $from = $_POST['from'];
    $theme = $_POST['theme'];
    $content = $_POST['content'];
    $to = ereg_replace (",([^ ]{1})", ", \\1", $to);
    $theme = $theme==""?"No subject":$theme;
    if (@$_POST['cyr_encode'] == "yes")
    $theme = "=?koi8-r?B?".base64_encode(convert_cyr_string($theme, "w","k"))."?=";

    if (@$_POST['html'] == "yes")
    $ctype = "html";
    else
    $ctype = "plane";

    $header = "Content-Type: text/$ctype; charset=\"$charset\" \r\n";
    $header .= "From: $from \r\n";
    $header .= "X-Mailer: PHP-Mailer by s1ayer[www.spg.arbse.net] \r\n";

    if (@$_POST['hide_addr'] == "yes")
            {
        $error = 0;
        $to_array = explode (", ", $to);
        for ($i=0; $i<count($to_array); $i++)
                {
        if ($to_array == "")
        continue;

        if (!@mail($to_array[$i], $theme, $content, $header))
            $error++;

                }
    if ($error == 0)
    print "Отправка письма завершилась без ошибок<br><br>";
    else
    print "Невозможно отправить письмо!<br><br>";

            }
        else
            {
    if (@mail($to, $theme, $content, $header))
        print "Отправка письма завершилась без ошибок<br><br>";
    else
        print "Невозможно отправить письмо!<br><br>";
            }

    }
    else
        print "Вы не заполнили поле 'Кому' !<br><br>";

        }
    ?>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function hide_button (){
    document.getElementById('button').style.display = "none";
    document.getElementById('processing').style.display = "block";
    }
    //-->
    </SCRIPT>
    <form action="?send" method="post">
    <table>
    <tr><td>Кому:</td><td><input type="text" name="to" value="<?=$default_to?>" size=40></td></tr>
    <tr><td>От кого:</td><td><input type="text" name="from" value="<?=$default_from?>" size=40></td></tr>
    <tr><td>Тема:</td><td><input type="text" name="theme" size=40></td></tr>
    <tr><td valign="top">Содержание:</td><td><textarea name="content" rows=9 cols=50><?=$default_sign?></textarea></td></tr>
    <tr><td colspan=2>
    Опции:<br>
    <ul>
    <li>отправить в HTML ? <input type="checkbox" name="html" value="yes"></li>
    <li>кодировать заголовок письма в koi8 ? <input type="checkbox" name="cyr_encode" value="yes" checked></li>
    <li>скрыть других адресатов ? <input type="checkbox" name="hide_addr" value="yes" checked></li>
    </ul>
    </td>
    </tr>
    <tr><td colspan=2 align="right"><input type="hidden" name="sform" value="yes"><input type="submit" value="Отправить" id=button style="display: block" onClick="hide_button()"><button id="processing" style="display: none" disabled>Пожалуйста, ждите...</button></td></tr>
    </table>
    </form>

    <?
    }
    else
    print "Извините, сервер не поддерживает функции <tt>mail ()</tt>";
    ?>

    PHP:
    <?
    $charset "windows-1251"//кодировка письма
    $default_to "slayer <[email protected]>, somebody <[email protected]>"//адресаты по умолчанию
    $default_from "s1ayer <[email protected]>"//отправитель по умолчанию
    $default_sign "\r\n---\r\nBest regards, admin (http://www.spg.arbse.net)"//подпись в теле письма
    ?>
     
  3. inlanger

    inlanger Elder - Старейшина

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    Есть класс на пхп для этого
     
  4. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    http://www.php-mail.ru/?id=4
     
  5. saiman

    saiman Banned

    Joined:
    2 Dec 2005
    Messages:
    63
    Likes Received:
    5
    Reputations:
    -28
    Залил вот так. На добавление файла кнопка есть, но файл не пересылает на нужный мыл. И мне нужно присоеденить несколько файлов. Как можно это зделать и что бы все работало.
    PHP:
    <?
    if (@
    function_exists("mail"))
    {
    include 
    "config.php";
    ?>

    <?
    if (isset($_GET['send']) and isset($_POST['sform']))    
        {
    $to = trim($_POST['to']);
    if ($to != "")
    {
    $from = $_POST['from'];
    $theme = $_POST['theme'];
    $content = $_POST['content'];
    $to = ereg_replace (",([^ ]{1})", ", \\1", $to);
    $theme = $theme==""?"No subject":$theme;
    // если был файл, то прикрепляем его к письму
            if(isset($_FILES['attachfile'])) {
                     if($_FILES['attachfile']['error'] == 0){
                        $mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);
                     }
            }
            // если было изображение, то прикрепляем его в виде картинки к телу письма.
            if(isset($_FILES['attachimage'])) {
                     if($_FILES['attachimage']['error'] == 0){
                        if (!$mail->AddEmbeddedImage($_FILES['attachimage']['tmp_name'], 'my-attach', 'image.gif', 'base64', $_FILES['attachimage']['type']))
                             die ($mail->ErrorInfo);
                        $mess .= 'А вот и наша картинка:<br /><img src="cid:image.gif" border=0><br />я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) ';
                     }
            }
            $mail->Body = $mess; 
    if (@$_POST['cyr_encode'] == "yes")
    $theme = "=?koi8-r?B?".base64_encode(convert_cyr_string($theme, "w","k"))."?=";

    if (@$_POST['html'] == "yes")
    $ctype = "html";
    else
    $ctype = "plane";

    $header = "Content-Type: text/$ctype; charset=\"$charset\" \r\n";
    $header .= "From: $from \r\n";
    $header .= "X-Mailer: PHP-Mailer by s1ayer[www.spg.arbse.net] \r\n";

    if (@$_POST['hide_addr'] == "yes")
            {
        $error = 0;
        $to_array = explode (", ", $to);
        for ($i=0; $i<count($to_array); $i++)
                {
        if ($to_array == "")
        continue;

        if (!@mail($to_array[$i], $theme, $content, $header))
            $error++;

                }
    if ($error == 0)
    print "Отправка письма завершилась без ошибок<br><br>";
    else
    print "Невозможно отправить письмо!<br><br>";

            }
        else
            {
    if (@mail($to, $theme, $content, $header))
        print "Отправка письма завершилась без ошибок<br><br>";
    else
        print "Невозможно отправить письмо!<br><br>";
            }

    }
    else
        print "Вы не заполнили поле 'Кому' !<br><br>";

        }
    ?>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function hide_button (){
    document.getElementById('button').style.display = "none";
    document.getElementById('processing').style.display = "block";
    }
    //-->
    </SCRIPT>
    <form action="?send" method="post">
    <table>
    <tr><td>Кому:</td><td><input type="text" name="to" value="<?=$default_to?>" size=40></td></tr>
    <tr><td>От кого:</td><td><input type="text" name="from" value="<?=$default_from?>" size=40></td></tr>
    <tr><td>Тема:</td><td><input type="text" name="theme" size=40></td></tr>
    <tr><td valign="top">Содержание:</td><td><textarea name="content" rows=9 cols=50><?=$default_sign?></textarea></td></tr>
    <tr><td colspan=2>
    Опции:<br>
    <ul>
    <br />Файл<br />
                  <input name="attachfile" type="file" size="28">
                  <br />Изображение<br /> 
    <li>отправить в HTML ? <input type="checkbox" name="html" value="yes"></li>
    <li>кодировать заголовок письма в koi8 ? <input type="checkbox" name="cyr_encode" value="yes" checked></li>
    <li>скрыть других адресатов ? <input type="checkbox" name="hide_addr" value="yes" checked></li>
    </ul>
    </td>
    </tr>
    <tr><td colspan=2 align="right"><input type="hidden" name="sform" value="yes"><input type="submit" value="Отправить" id=button style="display: block" onClick="hide_button()"><button id="processing" style="display: none" disabled>Пожалуйста, ждите...</button></td></tr>
    </table>
    </form>

    <?
    }
    else
    print "Извините, сервер не поддерживает функции <tt>mail ()</tt>";
    ?>
     
    1 person likes this.
  6. cash$$$

    cash$$$ Banned

    Joined:
    6 Jan 2008
    Messages:
    385
    Likes Received:
    246
    Reputations:
    10
    saiman

    Попробуй так:

    Для начала, чтобы картинки корректно отображались на хостинге. Добавь файл
    .htaccess в папку со скриптом такого содержания:

    Code:
    <IfModule mod_charset.c> 
    CharsetRecodeMultipartForms off 
    </IfModule>
    Далее сам скрипт

    PHP:
    <?php 
    function show_form() 

    ?> 
    <form action="" method=post> 
    <div align="center"> 
                  <br />Имя*<br /> 
                  <input type="text" name="name" size="40"> 
                  <br />Контактный телефон<br /> 
                  <input type="text" name="tel" size="40"> 
                  <br />Контактный email*<br /> 
                  <input type="text" name="email" size="40"> 
                  <br />Teма<br /> 
                  <input type="text" name="title" size="40"> 
                  <br />Сообщение*<br /> 
                  <textarea rows="10" name="mess" cols="30"></textarea> 
                  <br /><input type="submit" value="Отправить" name="submit"> 
    </div> 
    </form> 
    * Помечены поля, которые нужно заполнить 
    <? 


    function complete_mail() { 
            // $_POST['title'] содержит данные из поля "Тема", trim() - убираем все лишние пробелы и переносы строк, htmlspecialchars() - преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались, ну и  substr($_POST['title'], 0, 1000) - урезаем текст до 1000 символов. Для переменных $_POST['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] все аналогично 
            $_POST['title'] =  substr(htmlspecialchars(trim($_POST['title'])), 0, 1000); 
            $_POST['mess'] =  substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000); 
            $_POST['name'] =  substr(htmlspecialchars(trim($_POST['name'])), 0, 30); 
            $_POST['tel'] =  substr(htmlspecialchars(trim($_POST['tel'])), 0, 30); 
            $_POST['email'] =  substr(htmlspecialchars(trim($_POST['email'])), 0, 50); 
            // если не заполнено поле "Имя" - показываем ошибку 0 
            if (empty($_POST['name'])) 
                 output_err(0); 
            // если неправильно заполнено поле email - показываем ошибку 1 
            if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email'])) 
                 output_err(1); 
            // если не заполнено поле "Сообщение" - показываем ошибку 2 
            if(empty($_POST['mess'])) 
                 output_err(2); 
            // создаем наше сообщение 
            $mess = ' 
    Имя отправителя:'.$_POST['name'].' 
    Контактный телефон:'.$_POST['tel'].' 
    Контактный email:'.$_POST['email'].' 
    '.$_POST['mess']; 
            // $to - кому отправляем 
            $to = '[email protected]'; 
            // $from - от кого 
            $from='[email protected]'; 
            mail($to, $_POST['title'], $mess, "From:".$from); 
            echo 'Спасибо! Ваше письмо отправлено.'; 


    function output_err($num) 

        $err[0] = 'ОШИБКА! Не введено имя.'; 
        $err[1] = 'ОШИБКА! Неверно введен e-mail.'; 
        $err[2] = 'ОШИБКА! Не введено сообщение.'; 
        echo '<p>'.$err[$num].'</p>'; 
        show_form(); 
        exit(); 


    if (!empty($_POST['submit'])) complete_mail(); 
    else show_form(); 
    ?>
     
    1 person likes this.
  7. saiman

    saiman Banned

    Joined:
    2 Dec 2005
    Messages:
    63
    Likes Received:
    5
    Reputations:
    -28
    В браузере пишет что всплывающее окно заблокировано. Мне нужно переделать под приклеевание файлов к письму именно мой скрипт указаный выше. Может кто поможет?
     
  8. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Блин, не тупи, разреши javascript в браузере. А вообще сам подумай, вот у тебя даже и то блокиратор окон стоит - вывод, javascript нах, всё делаей через php, так правильней
     
    1 person likes this.
  9. saiman

    saiman Banned

    Joined:
    2 Dec 2005
    Messages:
    63
    Likes Received:
    5
    Reputations:
    -28
    Ну может кто подскажет, что нужно изменить в моем первом скрипте дабы все похало. Какой класс куда вставить? Я был бы очень признателен тому человеку который помог бы!
     
  10. saiman

    saiman Banned

    Joined:
    2 Dec 2005
    Messages:
    63
    Likes Received:
    5
    Reputations:
    -28
    А этот скрипт разве без ошибок написан?!
     
  11. saiman

    saiman Banned

    Joined:
    2 Dec 2005
    Messages:
    63
    Likes Received:
    5
    Reputations:
    -28
    Актуально.
     
  12. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16
    PHP:
     вот пример!!!








    <IfModule mod_charset.c>   CharsetRecodeMultipartForms off   </IfModule>   Итак, переходим к скрипту:   <?php   function show_form()   {   ?>   <form action="" method=post enctype="multipart/form-data">   <div align="center">                 <br />Имя*<br />  
                   <input type="text" name="name" size="40">                 <br />Контактный телефон<br /
    >                 <input type="text" name="tel" 
    size="40">                 <br />Контактный email*<br /
    >                 <input type="text" name="email" 
    size="40">                 <br />Teма<br />             
        <input type="text" name="title" 
    size="40">                 <br />Сообщение*<br /
    >                 <textarea rows="10" name="mess" 
    cols="30"></textarea>                 <br />Файл<br /
    >                 <input name="attachfile" type="file" 
    size="28">                 <br />Изображение<br /
    >                 <input name="attachimage" type="file" 
    size="28">                 <br /><br /><input type="submit"
     value="Отправить" name="submit">   </div>   </
    form>   * Помечены поля, которые необходимо 
    заполнить   <?   }     function complete_mail() {           
    // $_POST['title'] содержит данные из поля "Тема", trim
    () -
    ($_POST['title'], 0, 1000) - 
     текст до 1000 символов. Для переменных $_POST
    ['mess'], $_POST['name'], $_POST['tel'], $_POST['email'] 
    все аналогично           $_POST['title'] =  substr
    (htmlspecialchars(trim($_POST['title'])), 0, 1000);           $_POST['mess'] =  substr(htmlspecialchars(trim($_POST['mess'])), 0, 1000000);           $_POST['name'] =  substr(htmlspecialchars(trim($_POST['name'])), 0, 30);           $_POST['tel'] =  substr(htmlspecialchars(trim($_POST['tel'])), 0, 30);           $_POST['email'] =  substr(htmlspecialchars(trim($_POST['email'])), 0, 50);           // если не заполнено поле "Имя" - показываем ошибку 0           if (empty($_POST['name']))                output_err(0);           // если неправильно заполнено поле email - показываем ошибку 1           if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))                output_err(1);           // если не заполнено поле "Сообщение" - показываем ошибку 2           if(empty($_POST['mess']))                output_err(2);           // обратите внимание, теперь мы можем писать красивые письма, с помощью html тегов ;-)           $mess = '   <b>Имя отправителя:</b>'.$_POST['name'].'<br />   <b>Контактный телефон:</b>'.$_POST['tel'].'<br />   <b>Контактный email:</b>'.$_POST['email'].'<br />   '.$_POST['mess'];             // подключаем файл класса для отправки почты           require 'class.phpmailer.php';             $mail = new PHPMailer();           $mail->From = '[email protected]';      // от кого           $mail->FromName = 'www.php-mail.ru';   // от кого           $mail->AddAddress('[email protected]', 'Имя'); // кому - адрес, Имя           $mail->IsHTML(true);        // выставляем формат письма HTML           $mail->Subject = $_POST['title'];  // тема письма             // если был файл, то прикрепляем его к письму           if(isset($_FILES['attachfile'])) {                    if($_FILES['attachfile']['error'] == 0){                       $mail->AddAttachment($_FILES['attachfile']['tmp_name'], $_FILES['attachfile']['name']);                    }           }           // если было изображение, то прикрепляем его в виде картинки к телу письма.           if(isset($_FILES['attachimage'])) {                    if($_FILES['attachimage']['error'] == 0){                       if (!$mail->AddEmbeddedImage($_FILES['attachimage']['tmp_name'], 'my-attach', 'image.gif', 'base64', $_FILES['attachimage']['type']))                            die ($mail->ErrorInfo);                       $mess .= 'А вот и наша картинка:<br /><img src="cid:image.gif" border=0><br />я показал как ее прикреплять, соответственно Вам осталось вставить ее в нужное место Вашего письма ;-) ';                    }           }           $mail->Body = $mess;             // отправляем наше письмо           if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);           echo 'Спасибо! Ваше письмо отправлено.';   }     function output_err($num)   {       $err[0] = 'ОШИБКА! Не введено имя.';       $err[1] = 'ОШИБКА! Неверно введен e-mail.';       $err[2] = 'ОШИБКА! Не введено сообщение.';       echo '<p>'.$err[$num].'</p>';       show_form();       exit();   }     if (!empty($_POST['submit'])) complete_mail();   else show_form();   ?>












     
    #12 KaZ@NoVa, 30 Dec 2008
    Last edited: 30 Dec 2008
    1 person likes this.
  13. saiman

    saiman Banned

    Joined:
    2 Dec 2005
    Messages:
    63
    Likes Received:
    5
    Reputations:
    -28
    скрипт с ошибками((((
     
  14. saiman

    saiman Banned

    Joined:
    2 Dec 2005
    Messages:
    63
    Likes Received:
    5
    Reputations:
    -28
    Тему можно закрывать. Всем спасибо за помощь!!!