Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сработает ли этот код?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: разбор скрипта массовой отправки писем
B_U_T_C_H
Отправлено: 23 Марта, 2008 - 11:59:03
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




Есть такой скрипт:



PHP:
скопировать код в буфер обмена
  1. function mass_email_function($arg_array, $mail_to_array) {
  2.  
  3. $mail_from_addr       = $arg_array['mail_from_addr'];
  4. $mail_from_name       = $arg_array['mail_from_name'];
  5. $mail_subject         = $arg_array['mail_subject'];
  6. $mail_body            = $arg_array['mail_body'];
  7.  
  8. // $mail_start_date format: mm/dd/yy
  9. $mail_start_date      = $arg_array['mail_start_date'];
  10.  
  11. // $mail_start_time format: hh:mm - hour
  12. // 24-hour format; i.e. '00' to '23'
  13. $mail_start_time      = $arg_array['mail_start_time'];
  14.  
  15. $debug                = $arg_array['debug']; //boolean
  16.  
  17. $sendmail_binary      = '/usr/sbin/sendmail';
  18. $at_binary            = '/usr/bin/at';
  19. $here_doc_identifier  = 'This_is_a_limit_string_sufficiently_unusual_that_it_will_not_occur_anywhere_in_the_text';
  20.  
  21. if (empty($mail_start_date)) { $mail_start_date = date('m/d/y', time()); }
  22. if (empty($mail_start_time)) { $mail_start_time = date('H:i', time()); }
  23.  
  24. if ($debug) {
  25.  
  26.    $at_pipe = popen ('cat > debug.txt','w');
  27.    $debug_comment  = '# to debug this script at shell prompt type: ';
  28.    $debug_comment .= $at_binary.' '.$mail_start_time.' '.$mail_start_date;
  29.    $debug_comment .= ' < debug.txt'.chr(10);
  30.    fwrite ($at_pipe, $debug_comment);
  31.  
  32. } else {
  33.  
  34.    $at_pipe = popen ($at_binary.' '.$mail_start_time.' '.$mail_start_date,'w');
  35. }
  36.  
  37. $shell_script  = chr(10);
  38. $shell_script .= 'send_mail_to () {'.chr(10);
  39. $shell_script .= chr(10);
  40. $shell_script .= $sendmail_binary.' -i -t -f '.$mail_from_addr.' 1>/dev/null <<'.$here_doc_identifier.chr(10);
  41. $shell_script .= 'Subject: '.$mail_subject.chr(10);
  42. $shell_script .= 'From: "'.escapeshellcmd($mail_from_name).'" <'.escapeshellcmd($mail_from_addr).'>'.chr(10);
  43. $shell_script .= 'To: "$1" <$2>'.chr(10);
  44. $shell_script .= $mail_body.chr(10);
  45. $shell_script .= $here_doc_identifier.chr(10);
  46. $shell_script .= chr(10);
  47. $shell_script .= 'return 0'.chr(10);
  48. $shell_script .= '}'.chr(10);
  49. $shell_script .= chr(10);
  50.  
  51. fwrite ($at_pipe, $shell_script);
  52. fwrite ($at_pipe, chr(10).chr(10).'# start to send_mail_to function calls '.chr(10));
  53.  
  54. reset ($mail_to_array);
  55. while (list ($name, $email) = each ($mail_to_array)) {
  56.  
  57.     fwrite ($at_pipe, 'send_mail_to '.escapeshellarg($name).' '.escapeshellarg($email).chr(10));
  58. }
  59.  
  60. fwrite ($at_pipe, chr(10).'exit 0'.chr(10));
  61. pclose ($at_pipe);
  62.  
  63. return True;
  64. }


При каких условиях он должен сработать и при каких не сработает? Имею ввиду права, настройки сервера и т.д.
 
 Top
B_U_T_C_H
Отправлено: 25 Марта, 2008 - 20:36:10
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




и никто не подскажет?)
 
 Top
EuGen Администратор
Отправлено: 25 Марта, 2008 - 20:53:40
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ну а Вы хотя бы пробовали?
Если нет-то попробуйте, если да и не получилось, то поищите ошибку.
Если Вы хотите, чтобы Вам тут смогли в этом помочь, то опишите ситуацию возникновения ошибки, если нет, то добро пожаловать:
http://phpfaq[dot]ru/debug

(Отредактировано автором: 25 Марта, 2008 - 20:55:34)



-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
B_U_T_C_H
Отправлено: 25 Марта, 2008 - 21:15:17
Post Id


Новичок


Покинул форум
Сообщений всего: 25
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




Да, я пробовал. Письма не разослались. Но сообщений об ошибках тоже не было.
Я не очень силен в линуксе, помогите понять, что в этом скрипте имеется ввиду. Его авторы утверждают, что можно даже планировать время отправки писем, если записать время в переменную mail_start_time . Но как? я не нашел в этом скрипте ни малейшего намека на какой то временной счетчик...
 
 Top
EuGen Администратор
Отправлено: 26 Марта, 2008 - 10:26:25
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ну хорошо, могу сказать точно необходимые условия работы (но не достаточные):
0. Установленный и правильно сконфигурированный демон sendmail
1. Установлен sendmail должен быть туда, куда сказано в этом скрипте (то есть /usr/sbin/sendmail) или же нежно менять значение $sendmail_binary
2. Аналогично для бинарника at
3. Версия php>=4.0.3 (это потому, что требуют функции скрипта)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB