Mail() + Sleep()

kad

Новичок
Mail() + Sleep()

При отправке почты средствами PHP Mail() замечено, что не все SMTP сервера шустрые. Для этого после Mail() я ставлю задержку по худшему, например на 10 секунд. Но при отправке в цикле большого числа писем задержка явно ощущается.
Как можно сделать отправку по факту -> при успехе приема сервером SMTP не дожидаться завершения задержки, а слать следующее письмо?

Спасибо.
 

whirlwind

TDD infected, paranoid
[mod_telepate]
PHP:
//PEAR::Mail
include_once("Mail.php");
$params = array(
   ...
   "persist" = true,
);
$smtp = Mail::factory("smtp",...);
[/mod_telepate]

???
 

Tor

Новичок
Как можно сделать отправку по факту -> при успехе приема сервером SMTP не дожидаться завершения задержки, а слать следующее письмо
убрать слип
 

facelift

Новичок
Что-то я не совсем понимаю. Вообще функция mail() может посылать сразу несколько писем.
Из мануала:
$to = '[email protected]' . ', '; // note the comma
$to .= '[email protected]';
...
mail($to, $subject, $message, $headers);
 

kad

Новичок
Спасибо за помощь.
Отправляю письма в цикле (согласно задания) подряд функцией PHP Mail() на удаленный сервер SMTP.
Смущает большая задержка приема первого письма - порядка 15-20 сек. Потом отправка идет быстро, но не все письма для отправки уходят. Например из 20 писем порядка 5-и последних остаются не отправленными, хотя мой PHP скрипт завершается без ошибок, молчком. И без слипа примерно также. И есть сервера где проходит.
Конечно конкретики маловато, мыслей пока нет, но если какой эксперимент провести - я с радостью.
 

ybilevych

Новичок
Согласно доке функция [m]mail()[/m] возвращает статус (true или false) постановки письма в очередь отправки локального мейл-сервера и не гарантирует доставку письма адресату. Т.е. ты не получишь сообщения об ошибке постановки в очередь, если сам не обработаешь этот статус.
А задержка здесь ни при чем.
 

kad

Новичок
Автор оригинала: ybilevych
Согласно доке функция [m]mail()[/m] возвращает статус (true или false) постановки письма в очередь отправки локального мейл-сервера и не гарантирует доставку письма адресату. Т.е. ты не получишь сообщения об ошибке постановки в очередь, если сам не обработаешь этот статус.
А задержка здесь ни при чем.
Согласен, но я это делаю:
PHP:
if (!@mail(...) return(10);
Выходит очередь маловата? ........
Пробовал на свой локальный SMTP сервер слать - без проблем.
Может на некоторых SMTP серверах есть ограничения?
 

Never

Новичок
kad, ты уверен, что на том SMTP сервере нет ограничения на количество писем в единицу времени с одного ip? Вообще, это нормальная практика.
 

kad

Новичок
Автор оригинала: Never
kad, ты уверен, что на том SMTP сервере нет ограничения на количество писем в единицу времени с одного ip? Вообще, это нормальная практика.
Чаще я пробовал на mail.ru
Ну и как там у них? Хотелось бы знать.

В принципе не похоже. Отправлял Outlook-ом аттач с разбивкой сообщения сам себе, ну чтоб писем 15 получалось.
Все идет.
 
Сверху