CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум web-программистов > Форум PHP

Ответ Создать новую тему
 
Старый 07.09.2011, 23:51   #1
Vitalik010979
Новичок
 
Регистрация: 07.09.2011
Сообщений: 5
Репутация: 0 (0)
По умолчанию PHP Скрипт для отправки почты

Админ ПОМОГИ У меня PHP скрипт для отправки письма на почту заборохлил Он РАБОТАЕТ но вложения файлов приходят пустыми 0кб
Вот Скрипт
Код 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
<?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> 
 <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;} 
}
?>
Vitalik010979 вне форума
Другие темы раздела
Передать массив d JS-функцию PHP
Здравствуйте. Есть два массива $A и $B. Нужно что бы при клике на элемент массива А, выводился соответствующий элемент массива В Вот код: do { ... print "<a href=# onclick=show($i)>$A... </a>";. Передать массив d JS-функцию
Регулярное выражение: вырезать текст из ссылки PHP
Здравствуйте. Не могу разобраться с регулярными выражениями... Пример: $text = '<a href="tratata1.html">some text1</a><a href="tratata2.html">some text2</a><a href="tratata3.html">some text3</a>'; $pattern = '/<a\shref=\".{1,}\">(.{1,})<\/a>/'; if (!preg_match_all($pattern,.... Регулярное выражение: вырезать текст из ссылки
Старый 18.12.2011, 23:59   #21
ZverBlin
Форумчанин
 
Регистрация: 04.08.2011
Сообщений: 196
Репутация: 1 (1)
По умолчанию Re: PHP Скрипт для отправки почты

У меня возникла проблема
есть форма
Код 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
<div class="wrapper">       
        <form id="form" class="blocks" action="----" method="post">
            <p>
                <label>Имя:</label>
                <input type="text" class="text" name="name" />
            </p>
                <label>Фамилия:</label>
                <input type="text" class="text" name="lastname" />
            <p>
                <label>Телефон:</label>
                <input type="text" class="text" name="phone" />
            </p>
            <p>
                <label>Ваш e-mail:</label>
                <input type="text" class="text" name="email" />
            </p>
            <p>
                <label>Индекс:</label>
                <input type="text" class="text" name="index" />
            </p>
            <p class="area">
                <label>Адрес:</label>
                <textarea class="textarea" name="adress"></textarea>
            </p>
            <p>
                <label>&nbsp;</label>
                <input type="submit" class="btn" value="Отправить" />
            </p>
        </form>
    </div>
Нужно все введённое в этой форме отправить на почту
Кто скрипт подкинет
ZverBlin вне форума
Старый 23.01.2012, 02:57   #22
simonphoenix
Новичок
 
Регистрация: 18.01.2012
Сообщений: 95
Репутация: 0 (0)
По умолчанию Re: PHP Скрипт для отправки почты

Привет, подскажите в чем проблема. Взял ваш код почтовой формы у меня из строки имя приходят на почту только знаки вопроса а из строки текст только английские буквы
simonphoenix вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 23.01.2012, 13:43   #23
ZverBlin
Форумчанин
 
Регистрация: 04.08.2011
Сообщений: 196
Репутация: 1 (1)
По умолчанию Re: PHP Скрипт для отправки почты

у файла кодировку измени на UTF-8
ZverBlin вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
C# .NET Ошибка отправки почты
Значит делал простую программу для отправку писем сделал и отложил на месяц теперь понадобилось вставить наработки в программу но вот запара программа уже не работает выдаёт ошибку. Сбой при отправке сообщения электронной почты. SmtpClient Smtp = new SmtpClient("smtp.gmail.com", 25); ...
Midnayt
HTML, CSS Форма отправки почты...
Привет всем! Я новичок в HTML, а свой сайт рисовал буквально в Word'e. Этого мне достаточно для размещения своих программ, но... возможно ли при помощи HTML создать форму отправки мне почты? Т.е. человек указывает свой обратный E-mail, пишет мне письмо на сайте, нажимает "Отправить" и его письмо...
Vinemax
Flash Кнопка для отправки почты
Народ подскажите пожалуйста возможно ли во Флеш сделать кнопку чтоб при нажатии выскакивало почта. По типу как в нтмл <a href="mailto:ask@book.ru">почта</a> Сам только недавно начал изучать Флеш. Если да, кинте не большое описание как=) За ранее благодарен Дмитрий.
Etasch
С++ для начинающих Функция для отправки почты
Нужна самая простая функция для отправки емайлов из С++ то есть просто задать адрес почты, smpt сервер, текст сообщения и отправить письмо Нашел пример на С но мне нужен именно С++
nill
Хостинг Ошибка отправки почты
Имеется почта на хостинге http://host-food.ru, пытаюсь настроить ее в программе зе бат, письма все принимаются с этим все нормально, а отправить не могу, ловлю ошибку, настройки брал с хостинга... Подскажите пожалуйста в чем проблема? gmail.com и mail.ru работает нормально
nepster
Опции темы

Текущее время: 04:33. Часовой пояс GMT +4.

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