Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.54/24: Рейтинг темы: голосов - 24, средняя оценка - 4.54
Vitaly79
0 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 3
1

PHP Скрипты для отправки почты с вложением

14.07.2011, 02:25. Просмотров 4507. Ответов 3
Метки нет (Все метки)

ПРИВЕТ! мне очень нужен скрипт для отправки почты на несколько адресов с вложением

Добавлено через 17 минут
ВОТ СКРИПТ НО ОН ПОЧЕМУ ТО НЕ ОТСЫЛАЕТ Может бесплатный хостинг или ошибка в срипте ПОСМОТРИТЕ ПОЖАЛУЙСТА Стоит на hut.ru
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<?php 
$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_message= 0; 
   $num_send = 0; 
   $num_bad  = 0; 
   $num_error= 0; 
   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> 
 <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 valign="top" 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    </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){ 
       $message_part = "--$boundary\n";
    $message_part .= "Content-Type: application/octet-stream\n";
    $message_part .= "Content-Transfer-Encoding: base64\n";
    $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
    $message_part .= chunk_split(base64_encode($file))."\n";
    $multipart .= $message_part."--$boundary--\n"; 
     } 
     // $body.="$bound--".$sep.$sep; 
   break; 
   default: 
     echo('<center><b>Неверный параметр типа письма.</b></center>'); 
   break; 
 } 
 if(mail($to,$subject,$body,$headers)){return true;} 
 else{return false;} 
}
?>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2011, 02:25
Ответы с готовыми решениями:

PHP Скрипт для отправки почты
Админ ПОМОГИ У меня PHP скрипт для отправки письма на почту заборохлил Он РАБОТАЕТ но вложения...

Php-скрипт для отправки данных на сервер
Добрый день, в php профан, не получается сделать никак по заданию. часть сделал, другую никак....

PHP сервер для отправки push на приложение Android
Всем привет. В обще случилась такая ситуация: нужно подготовить проект состоящий из 2...

Посоветуйте украинский сервис для отправки смс PHP скриптом
Посоветуйте украинский сервис для отправки смс PHP скриптом. Интересует именно украинский. Спасибо.

Форма отправки почты без перезагрузки страницы
Помогите сделать так, чтоб моя форма обрабатывалась безе перезагрузки странички. Заранее...

3
Hurtsok
bigMatherHacker
108 / 78 / 12
Регистрация: 18.08.2010
Сообщений: 237
14.07.2011, 12:20 2
Держи, пользуйся. Написал под твою форму. Если нужна будет множественная загрузки или какие специфичные проверки, допилишь.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
       function checkEmail($from, $to){
          $strError = "";
          if(!empty($to)){
              preg_match('/^([A-Za-z0-9_])+(@){1}+([a-zA-Z])+\.+[a-zA-z]+$/', $to, $matches);
              if(empty($matches[0])) $strError .= " Введи правльный адрес получателя <br/>";          
          }
          if(!empty($from)){
             preg_match('/^([A-Za-z0-9])+(@){1}+([a-zA-Z])+\.+[a-zA-z]+$/', $from, $matches);
             if(empty($matches[0])) $strError .= " Введите правильный адрес отправителя <br/>";
          }
          return ($strError)? $strError : false;
       }
       
       function checkFields($to , $from, $subject)
       {
           //проверяем критичные поля
           $strError = "" ;
           if(empty($to)) $strError .= "*Не указан получатель <br/>";
           if(empty($from)) $strError .= "*Не указан получатель <br/>";
           if(empty($subject)) $strError .= "*Не указана тема письма <br/>";
           
           return $strError;
       }
   
   if(!empty($_POST["send"])){
       $to = htmlspecialchars($_POST['to']);
       $from = htmlspecialchars($_POST['from']);
       $subject = htmlspecialchars($_POST['subject']);
       
       if($strError = checkFields($to, $from, $subject)){
          echo $strError;
          exit();
       }      
       else{
          if($strError = checkEmail($from, $to)){
              echo $strError;
              exit();
          }   
          else{
              $boundary = strtoupper(uniqid(time()));
              $header      = "From: $from\n";
              $header     .= "To: $to\n";
              $header     .= "Subject: $subj\n";
              $header     .= "X-Mailer: PHPMail Tool\n";
              $header     .= "Reply-To: $from\n";
              $header     .= "Mime-Version: 1.0\n";
              $header     .= "Content-Type:multipart/mixed; boundary=\"----------".$boundary."\"\n\n";
              
              if($_FILES['filename']['name']){
                 $content = "";
                 $file = $_FILES['filename']['tmp_name'];
                 $fp = fopen($file, 'rb');
                 while( $data = fread($fp, 8046)){
                    $content .= $data;
                 }
                 fflush($fp);
                 fclose($fp);
                 $send_file = chunk_split(base64_encode($content));
                 $mes = $_POST['message'];
                 $attachment = "";
                 $attachment .= "------------".$bondary."\nContent-Type:text/html;\n";
                 $attachment .= "Content-Transfer-Encoding: 8bit\n\n$mes\n\n";
                 $attachment .= "------------".$boundary."\n";
                 $attachment .= "Content-Type: application/octet-stream; name=\"".basename($_FILES['filename']['name'])."\"\n";
                 $attachment .= "Content-Transfer-Encoding:base64\n";
                 $attachment .= "Content-Disposition:attachment; filename=\"".basename($_FILES['filename']['name'])."\"\n\n";
                 $attachment .= $send_file;
              }  
              mail($to, $subject, $attachment, $header);
          }
       }         
   }
1
Vitaly79
0 / 0 / 0
Регистрация: 14.07.2011
Сообщений: 3
14.07.2011, 12:41  [ТС] 3
Спасибо Большое Не подскажите что мне надо еще допилить ...
0
Hurtsok
bigMatherHacker
108 / 78 / 12
Регистрация: 18.08.2010
Сообщений: 237
14.07.2011, 12:49 4
Зависит от того какая стояла задача. Например: будет ли форма фильтровать файлы(что то можно отправить а что то нет), или может есть ограничение на домены, на которые пользователь может отправлять файлы, письма.
1
14.07.2011, 12:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2011, 12:49

Php код для отправки смс на почту - проверка валидности почты
привет всем )) есть php код для отправки смс на почту все нормально работает &lt;?php $name =...

Скрипт для отправки писем с вложением
Здравствуйте.Нужна помощь в доработке скрипта для отправки писем с вложениями. Только начал...

Разные способы отправки почты в PHP
Итак, озадачился данной проблемой, но прочитал несколько статей и в голове сложилась каша. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru