У кого есть РНР скрипт для отправки email ?

Discussion in 'PHP' started by MONARH, 16 Aug 2008.

  1. MONARH

    MONARH New Member

    Joined:
    13 Aug 2008
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    Помогите плз найти живой РНР скрипт, для анонимной отправки email с html ....
    Я все уже перевернул, но именно такого найти не могу. Есть варианты, но они без html.
     
  2. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    PHP:
    <html>
    <head>
      <title>Mail</title>
    <style type="text/css">
    body {font-family: Arial, Helvetica, sans-serif;font-size: 11px;}
    td {font-family: Arial, Helvetica, sans-serif;font-size: 11px;}
    h1 {font-family: Arial, Helvetica, sans-serif;font-size: 16px; color:#72BA75; }
    a {font-family: Arial, Helvetica, sans-serif;font-size: 11px;color : #000000;text-decoration: underline;}
    a:hover{font-family: Arial, Helvetica, sans-serif;font-size: 11px;color : #294A7B;text-decoration: none;}
    INPUT.button {padding:0px;height: 21px;font-family:Tahoma; font-size:12px;color:#FFFFFF; background-color:#B9BAC8; border: 1px solid #F7F7F7; cursor: pointer;font-weight: bold;}
    INPUT.inp {border: 1px solid #B9BAC8;background-color:#FFFFFF; font-size:11px;height: 18px; font-family:Arial;}
    textarea.inp {border: 1px solid #B9BAC8;background-color:#FFFFFF; font-size:11px; font-family:Arial;}
    </style>
    </head>
    <body>

    <?php
    set_time_limit
    (0);
    $message_in_min 10000;
    $mode $HTTP_POST_VARS['mode'];

    switch(
    $mode){
      case 
    'send':
        if(isset(
    $HTTP_POST_FILES['filename']['tmp_name'])){
          
    $base_name $HTTP_POST_FILES['filename']['name'];
          
    $f fopen($HTTP_POST_FILES['filename']['tmp_name'],"rb");
          
    $attach base64_encode(fread($f,filesize($HTTP_POST_FILES['filename']['tmp_name'])));
          
    $isfile 1;
        }
        else {
    $isfile 0;}
        
    # Проверки #################################################################
        
    $from $HTTP_POST_VARS['from'];
        if(empty(
    $from)){echo("Неуказан адрес отправителя");exit;}
        else if(!
    preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i",$from)){echo("$from - не верный адрес отправителя"); exit;}
        
    $fromname = @$HTTP_POST_VARS['fromname'];
        if(isset(
    $fromname)){$from $fromname." <$from>";}
        
    $subject $HTTP_POST_VARS['subject'];
        
    $subject =  htmlspecialchars(stripslashes($subject));
        if(!
    $subject){echo("Опять же, кто будет писать тему сообщения?");}
        
    $type $HTTP_POST_VARS['type'];
        
    $message $HTTP_POST_VARS['message'];
        if(
    $type == 'text'){$message =  htmlspecialchars(stripslashes($message));}
        if(!
    $message){echo("Короче, нужно что то написать. Где сообщение-то?"); exit;}
        
    ############################################################################
        
    $to_arr file(@$HTTP_POST_FILES['to']['tmp_name']);
        
    // print_r($to_arr);exit;
        
    $to_arr array_unique($to_arr);
        
    $i 0;
        
    $current_message0;
        
    $num_send 0;
        
    $num_bad  0;
        
    $num_error0;
        while(isset(
    $to_arr[$i])){
          
    $to_arr[$i] = trim($to_arr[$i]);
          if(!
    preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i",$to_arr[$i])){
            echo(
    $to_arr[$i].' - голимый адрес, я на его отправлять ничего не собираюсь'."<br>\n");
            
    $num_bad++;
          }
          else{
            if(
    sendemail($from,$to_arr[$i],$subject,$message,$type)){
              echo(
    'Сообщение на '.$to_arr[$i]." отправлено<br>\n"); flush();
              
    $num_send++;
            }
            else{
    $num_error++;}
          }
          
    $current_message++;
          if(
    $current_message == $message_in_min){
            
    $current_message 0;
            echo(
    'Отправлено '.$message_in_min.' соообщений. Пауза 60 сек.'."<br>\n");
            
    flush();
            
    sleep(30);
            echo(
    '<!---->'."\n");
            
    flush();
            
    sleep(30);
          }
          
    $i++;
        }
        echo(
    '<hr size="1" color="#000000">Рассылка завершена!<br>'."\n");
        echo(
    '
          <b>Отправлено  : '
    .$num_send.'</b>
          <b>Ошибок связи: '
    .$num_error.'</b>
          <b>Плохих email: '
    .$num_bad.'</b>
          <hr size="1" color="#000000">
        '
    );
      break;
      default:
        echo(
    '
    <div align="center">
    <h1>Рассылка писем</h1>
    <form method="post" enctype="multipart/form-data">
    <table align="center" border="0">
    <tr>
      <td align="right" bgcolor="#EBEBEB"><strong>От кого (Имя):</strong></td>
      <td><input type="Text" class="inp" name="fromname" value="" size="30"> * - Не обязательно. Например, Пупкин И.И.</td>
    </tr>
    <tr>
      <td align="right" bgcolor="#EBEBEB"><strong>От кого (Email):</strong></td>
      <td><input type="Text" class="inp" name="from" value="" size="30"> * - Только email адрес</td>
    </tr>
    <tr>
      <td align="right" bgcolor="#EBEBEB"><strong>Кому:</strong></td>
      <td><input type="File" name="to" class="inp" size="68"></td>
    </tr>
    <tr>
      <td align="right" bgcolor="#EBEBEB"><strong>Тема:</strong></td>
      <td><input type="Text" class="inp" name="subject" value="" size="80"></td>
    </tr>
    <tr>
      <td valign="top" align="right" bgcolor="#EBEBEB"><strong>Сообщение:</strong></td>
      <td><textarea name="message" rows="10" cols="82" class="inp"></textarea></td>
    </tr>
    <tr>
      <td align="right" bgcolor="#EBEBEB"><strong>Фаил:</strong></td>
      <td><input type="File" name="filename" class="inp" size="68"></td>
    </tr>
    <tr>
      <td align="right" bgcolor="#EBEBEB"><strong>Формат</strong></td>
      <td>

    <table width="100%">
    <tr>
      <td width="20"><input class="inp" type="Radio" name="type" value="text" checked></td>
      <td width="40">text&nbsp;&nbsp;&nbsp;&nbsp;</td>
      <td width="20"><input class="inp" type="Radio" name="type" value="html"></td>
      <td width="40">html</td>
      <td align="right"><input type="Hidden" name="mode" value="send"><input type="Submit" class="inp" value="Отправить"></td>
    </tr>
    </table>

    </td>
    </tr>
    <tr>
      <td bgcolor="#EBEBEB"></td>
      <td><hr size="3" color="#F7F7F7"></td>
    </tr>
    </table>
    </form>
    </div>
    '
    );
      break;
    }

    function 
    sendemail($from,$to,$subject,$message,$type){
      
    $bound time().'SPB';
      global 
    $attach$base_name$isfile;

      
    $sep chr(13).chr(10); // Разделитель строк заголовка
      
    switch($type){
        case 
    'text':
          
    $headers "From: ".$from.$sep;
          
    $headers.= "X-Priority: 3".$sep;
          
    $headers.= "X-MSMail-Priority: Normal".$sep;
          
    $headers.= "X-Mailer: PHP/".phpversion().$sep;
          
    $headers.= "MIME-Version: 1.0".$sep;
          
    $headers.= "Content-Type: multipart/mixed; boundary=\"".$bound."\"".$sep.$sep;

          
    $body "--$bound".$sep;
          
    $body.= "Content-type: text/plain; charset=\"windows-1251\"".$sep;
          
    $body.= "Content-Transfer-Encoding: 8bit".$sep.$sep;
          
    $body.= $message.$sep;
          
          if(
    $isfile == 1){
            
    $body.= "$sep$sep--$bound".$sep;
            
    $body.= "Content-Type: application/octet-stream;";
            
    $body.= "name=\"".basename($base_name)."\"".$sep;
            
    $body.= "Content-Transfer-Encoding:base64".$sep;
            
    $body.= "Content-Disposition:attachment".$sep.$sep;
            
    $body.= $attach.$sep;
          }
          
    // $body.="$bound--".$sep.$sep;
        
    break;
        case 
    'html':
          
    $headers "From: ".$from.$sep;
          
    $headers.= "X-Priority: 3".$sep;
          
    $headers.= "X-MSMail-Priority: Normal".$sep;
          
    $headers.= "X-Mailer: PHP/".phpversion().$sep;
          
    $headers.= "MIME-Version: 1.0".$sep;
          
    $headers.= "Content-Type: multipart/mixed; boundary=\"".$bound."\"".$sep.$sep;

          
    $body "--$bound".$sep;
          
    $body.= "Content-type: text/html; charset=\"windows-1251\"".$sep;
          
    $body.= "Content-Transfer-Encoding: 8bit".$sep.$sep;
          
    $body.= $message.$sep;

          if(
    $isfile == 1){
            
    $body.= "$sep$sep--$bound".$sep;
            
    $body.= "Content-Type: application/octet-stream;";
            
    $body.= "name=\"".basename($base_name)."\"".$sep;
            
    $body.= "Content-Transfer-Encoding:base64".$sep;
            
    $body.= "Content-Disposition:attachment".$sep.$sep;
            
    $body.= $attach.$sep;
          }
          
    // $body.="$bound--".$sep.$sep;
        
    break;
        default:
          echo(
    '<center><b>Неверный параметр типа письма.</b></center>');
        break;
      }
      if(
    mail($to,$subject,$body,$headers)){return true;}
      else{return 
    false;}
    }
    ?>
    </body>
    </html>

     
    _________________________
  3. lisa99

    lisa99 Banned

    Joined:
    15 Jul 2008
    Messages:
    359
    Likes Received:
    200
    Reputations:
    70
    Kaimi, регулярки для валидности это гуд, но все же скрипт перегружен, имхо
     
  4. PandoraBox

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

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Code:
    if (!filter_var($email, FILTER_VALIDATE_EMAIL))
    {
        echo "E-mail is not valid";
    } else {
        echo "E-mail is valid";
    }
     
  5. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    filter_var PHP 5 >= 5.2.0, PECL filter:0.11.0
    Бред :(
     
  6. MONARH

    MONARH New Member

    Joined:
    13 Aug 2008
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    Kaimi выложил скрипт...

    Плз, исправте кто знает этот скипт!!!!!!!!!!
    Проблемма вот в чем:
    Когда приходит письмо, в самом низу письма
    приходит ссылка на прикрепленный файл....
    А как убрать из скрипта эту функцию-проблемму я не знаю...
     
    #6 MONARH, 26 Aug 2008
    Last edited: 26 Aug 2008
  7. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Вот это попробуй - http://forum.antichat.ru/showpost.php?p=831449&postcount=34
     
    3 people like this.
  8. MONARH

    MONARH New Member

    Joined:
    13 Aug 2008
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0

    Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    +10
     
  9. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    5.2 сейчас практически везде, а свой модуль можно собрать на большинстве норм. хостингов.
     
  10. MONARH

    MONARH New Member

    Joined:
    13 Aug 2008
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0
    Так и не кто не знает как убрать эту функцию из скрипта????
     
  11. Zabuldon

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

    Joined:
    6 Apr 2008
    Messages:
    99
    Likes Received:
    6
    Reputations:
    0
    есть неплохой класс для отправки емайл с вложениями если надо пиши в личку выложу
     
    1 person likes this.
  12. Zabuldon

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

    Joined:
    6 Apr 2008
    Messages:
    99
    Likes Received:
    6
    Reputations:
    0
    Нет не приват =) просто лень кидать на аплодеры.... а так в личке даю номер аси и по ней отправляю =)