Перейти к содержимому


Новый механизм рассылок в 1.9.7


Сообщений в теме: 17

#1 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 21 Март 2013 - 11:13

Все рассылки я так понял производятся по крону, для этого они просто добавляются в очередь заданий. Как можно через вычисление добавить в эту очередь рассылку на почту по определенному шаблону?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 21 Март 2013 - 11:52

Также и как раньше - через функцию send_template. Можете поискать примеры на форуме.

#3 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 21 Март 2013 - 13:29

А смс по расписанию я тоже могу через вычисление в крон добавлять? Как их добавить в очередь? Например, в доп действии, у меня сейчас такой код.
//Номер телефона
$telefon = $line['Номер телефона'];
//Подпись
$signature_sms = "TaoPosrednk";
//Отправляем смс с подписью TaoPosrednk
$status_send_sms = sendsms("я текст для смс", $telefon, $signature_sms);


//Вычисляем остаток смс на балансе
$sqlQuery = "SELECT value FROM " . SMS_SETTINGS . " WHERE name = 'balance' LIMIT 1";
$result = mysql_query($sqlQuery) or die(mysql_error() . "<br />" . $sqlQuery);
$row = mysql_fetch_assoc($result);

if ($status_send_sms == "OK") {

echo "<script>alert('Номер " . $_POST['ttn'] . " успешно отправлен на номер " . $line['Номер телефона'] . ". Остаток смс по Украине составляет: " . $row['value'] . "');</script>";
//Закрываем окно
echo "<script>";
echo "window.opener.location.reload(1);";
echo "window.close();";
echo "</script>";
} else {
echo "<script>alert('Смс не отправлено. Остаток смс по Украине составляет: " . $row['value'] . ". Попробуйте еще раз!');</script>";
}


#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 21 Март 2013 - 14:00

Да, можете, причем ваш код для этого менять не надо. Функция sendsms также, как и ранее, отправляет отдельное смс, разница лишь в том, что ранее отсылка происходила сразу (что могло в том числе подвесить выполнение кода), теперь же сообщение вначале ставится в очередь рассылки, т.е. именно так как вы и хотите. Аналогично, изменилась и работа функции sendmail (отсылка отдельных писем) - письмо также ставится в общую очередь, только очереди у смс и писем разные. Про рассылку писем/смс по шаблону через send_template я уже выше ответил - там все тоже самое. Т.е. работа с самими функциями рассылки для разработчика вычислений практически не поменялась, изменился только их внутренний механизм.

#5 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 21 Март 2013 - 14:05

Спасибо за консультацию.

#6 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 27 Март 2013 - 12:31

Что это за ошибка?
27.03.2013 10:57:48 Система Восстановление пароля (Клиентская база) mymail555@mail.ru SMTP Error: The following recipients failed: mymail555@mail.ru
SMTP server error: "Too many emails."
Аналогичные ошибки были для рассылки, которая сформирована вычислением:

$send_filter = " `status` = 0 AND `f621`='$ID'";
send_template(61, $send_filter);

SMTP Error: The following recipients failed: mgodelAa@yandex.ru
SMTP server error: "Too many emails."

Статус рассылки - провалено

Сообщение отредактировал wondertalik: 27 Март 2013 - 12:38


#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Март 2013 - 12:49

Цитата

Что это за ошибка?

Очевидно, то о чем она и говорит: "Слишком много писем". Это ответ SMTP шлюза, программа лишь ретранслирует его.

Скорее всего, вы превысили лимит отправки писем с бесплатного ящика, как правило там стоят ограничения на число писем в час/в сутки. Узнайте какое там стоит ограничение и пропишите его в настройках SMTP.

#8 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 27 Март 2013 - 12:52

Это аккаунт саас, 30 писем это слишком много?

Цитата

Восстановлениепароля(Клиентскаябаза)
Тут только один емайл.

Сообщение отредактировал wondertalik: 27 Март 2013 - 12:55


#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Март 2013 - 12:58

Просмотр сообщенияwondertalik (27 Март 2013 - 12:52) писал:

Это аккаунт саас

И? Шлюз то у вас какой настроен? Я думал вы mail или yandex используете в качестве шлюза.

#10 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 27 Март 2013 - 13:04

Просмотр сообщенияCbCoder (27 Март 2013 - 12:58) писал:

И? Шлюз то у вас какой настроен? Я думал вы mail или yandex используете в качестве шлюза.
Имелось ввиду ваш шлюз тоже. И вот еще вопрос. Если у меня настроено несколько шлюзов, как происходит выбор шлюза, скажем при том же "Восстановлении пароля".

Сообщение отредактировал wondertalik: 27 Март 2013 - 13:10


#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Март 2013 - 13:51

По адресу отправителя в первую очередь. Если не найден - выбираются по очереди шлюзы, у которых в настройках стоит "разрешать подмену адреса". Если адрес отправителя не задан - то по всем имеющимся. При восстановлении пароля используется последний вариант (т.е. по любому может отослать)

#12 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 29 Март 2013 - 15:17

Раньше, 196 для отправки смс я использовал код представленный выше. Однако на 197 этот код не совсем правильно отрабатывает. Так как
$status_send_sms = sendsms($text_sms, $telefon, $signature_sms);

раньше возвращал "ОК". теперь не возвращает. пустая строка. в онлайн-консультанте мне сказали:

Цитата

сейчас не происходит мгновенной отправки, поэтому функция ничего и не возвращает.
надо искать сообщение в очереди и проверять его статус там
В дальнейшем добавят функции для этого. sendsms и sendmail будут возвращать id сообщения для последующей проверки статуса отправки
но все равно надо понимать что сейчас проверить СРАЗУ насколько удачно ушло сообщение - нельзя
т.е. код по любому придется переписывать, если нужна проверка

и как проверять статус отправки в вычислении? где это очередь сообщений хранится. как ее проверять?

#13 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 29 Март 2013 - 15:27

Вам же ответили - функции для проверки будут написаны позже. Сейчас вы никак не проверите, т.к. sendsms не возвращает id сообщения, по которому его можно найти.

#14 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 29 Март 2013 - 15:28

Просмотр сообщенияCbCoder (29 Март 2013 - 15:27) писал:

Вам же ответили - функции для проверки будут написаны позже. Сейчас вы никак не проверите, т.к. sendsms не возвращает id сообщения, по которому его можно найти.
Я думал возможно эти данные где-то дублируются в системных таблицах кб. Вот и спросил. А вот тогда вопрос. А как формируется лог рассылки тогда?

Сообщение отредактировал wondertalik: 29 Март 2013 - 15:32


#15 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 29 Март 2013 - 15:35

Цитата

Я думал возможно эти данные где-то дублируются в системных таблицах кб

Не "дублируются", а заносятся. Обе очереди в любом случае хранятся в системных таблицах - программа откуда-то должна их брать для обработки. Но я уже вам сказал, что для того чтобы найти там отправленное сообщение, нужно знать его id - а для этого необходима доработка sendsms и sendmail. Заодно сделаем функции для проверки, чтобы не копаться в таблицах самому.

#16 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 01 Апрель 2013 - 00:28

send_template(51, "`status` = 0 AND `f631` = 'В работе' AND `f621`=" . $line['ID']);
где $line['id'] - значение айди с поля типа связь. У меня рассылка делается по 1 емейлу, видеть первому попавшемуся аж 30 раз. В условие можно указать только 1 запись?

Кстати аналогичная ситуация если я выберу группу записей и потому нажму разослать - мне все 30 шт на 1 емейл.

Сообщение отредактировал wondertalik: 01 Апрель 2013 - 00:44


#17 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 761 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 01 Апрель 2013 - 11:50

Не совсем понял. Если речь о том что у вас условие выдает 30 записей, а вам нужно одну - ну так поменяйте условие. Либо добавьте "LIMIT 1" для отправки только первой записи из выбранных. Функция send_template отправляет ровно столько писем, сколько записей выдал фильтр.

#18 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 01 Апрель 2013 - 11:59

Да видать дело не в коде вообще. Я не могу сделать рассылку стандартными средствами. Выбираю несколько записей. Выбираю шаблон, а в рассылках создается рассылка с указанным количеством записей, но с одним и тем же емейлом. Такая фигня появилась после обновления до ревизии 8152. В тех. поддержку я уже написал.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных