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


Детально описание функции send_template


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

#21 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 02 Август 2014 - 23:12

А можно ли в sendmail указать адрес отправителя?

#22 CbCoder

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

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

Отправлено 03 Август 2014 - 14:13

Можно, 4-м аргументом.

#23 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 11 Август 2014 - 10:23

А вложить в письмо сформированный по шаблону документ после ввода внешней формы? Если можно, с примером описания функции. Понятно, что она будет прописывать скорее всего в вычислениях самого шаблона. Как оттуда отправить сформированный в html текст я уже разобрался, а вот как сформированный в odt документ переслать - пока не могу. А надо!

#24 CbCoder

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

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

Отправлено 11 Август 2014 - 10:49

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

#25 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 11 Август 2014 - 11:06

Синтаксис можно уточнить для внешней анкеты и шаблона в odt?

#26 CbCoder

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

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

Отправлено 11 Август 2014 - 11:21

Просмотр сообщенияАлександр Пономарев (11 Август 2014 - 11:06) писал:

Синтаксис можно уточнить для внешней анкеты и шаблона в odt?

send_template или sendmail?

Синтаксис не зависит от места вычисления и типа шаблона.

#27 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 11 Август 2014 - 11:53

Как сказать.
Для дополнительного действия send_template(621, "`status`=0 AND `id` =".$line['ID']); работает отлично. А вот при попытке прописать его в формулах внешней формы дает ошибку SQL.

#28 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 11 Август 2014 - 11:54

Но мне надо, чтобы автоматом отправлялось, а не вручную оператором.

Сообщение отредактировал Александр Пономарев: 11 Август 2014 - 11:54


#29 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 11 Август 2014 - 12:09

Ларчик открывался просто. Добавляем новое вычисление по условию "Сохранение в таблице", где прописываем формулу send_template(621, "`status`=0 AND `id` =".$line['ID']);, где 621 - код формы, в ней прописываем шаблон документа - и вуаля! Все работает на автомате!

#30 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 11 Август 2014 - 12:10

Тем не менее спасибо за помощь

#31 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 11 Август 2014 - 12:33

Поторопился я. Отправлять-то он отправляет, да только не вставляет поля. Видимо, он делает отправку при сохранении ДО формирования записи в таблице, когда еще ID не присвоен. Как это исправить?

#32 CbCoder

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

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

Отправлено 11 Август 2014 - 15:35

Цитата

Видимо, он делает отправку при сохранении ДО формирования записи в таблице, когда еще ID не присвоен

Такого не может быть, т.к. вычисление "при сохранении записи" запускается после сохранения оной.

#33 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 11 Август 2014 - 20:57

Тогда не могу понять, почему так происходит.

#34 CbCoder

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

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

Отправлено 12 Август 2014 - 08:29

Погодите, вы меняете какие-то поля в самом вычислении, через $line? Если да, то естественно, заполнение данных полей в шаблоне не произойдет, т.к. массив $line идет на сохранение уже после выполнения вычисления. В таком случае лучше самому сохранять данные запросом перед отправкой шаблона (об этом даже в документации упомянуто).

#35 Александр Пономарев

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

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 15 Август 2014 - 00:01

А как обращаться к переменным, записанным во внешнюю форму, но еще не сохраненным?

#36 CbCoder

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

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

Отправлено 15 Август 2014 - 10:50

Вы же вроде вычисление поставили на "сохранение записи", а не на форму? В любом случае все данные лежат в переменной $line. Но если вы их перезаписываете в коде, то сохраняются они только после выполнения вычисления, а send_template использует только сохраненные данные.

#37 AlexKrosh

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 15 Сентябрь 2017 - 13:01

Здравствуйте. Хочу уточнить один момент, а именно:

Просмотр сообщенияCbCoder (21 Май 2013 - 16:51) писал:

Там ничего особо детализировать не нужно, формат очень простой: send_template(id_шаблона, условие_фильтра). Второй аргумент - это любое условие отбора записей, разумеется там может быть не только условие "id=111", а какое угодно. Формат такой же как в SQL запросе после слова WHERE. Учитывайте только что архивные и удаленные записи также попадут в отбор, если вы явно не укажете отбирать только активные (status=0). Если этот аргумент опустить (как это прописано в заданиях крон в рассылках по расписанию), то берется фильтр из настроек шаблона.
Тут сказано, что условия отбора любое. Соответственно если я в cron завожу задание с таким текстом:
send_template(311,"`status`=0 AND f1670 BETWEEN '2017-06-01 00:00:00' AND '2017-06-01 23:59:59'");
то, как я понимаю должен сформироваться и отправиться шаблон с 21 записью согласно отбора. Однако в логе рассылок получаю следующее:
Отчет  13.09.2017 08:06 1 / 20 / 0
и на почту приходит шаблон с первой записью отбора. Т.е. рассылка ведется по каждой записи отбора и шаблон заполняется только одной строкой? Тогда почему приходит только одна, остальные в статусе провалено.

Сообщение отредактировал AlexKrosh: 15 Сентябрь 2017 - 13:05


#38 CbCoder

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

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

Отправлено 15 Сентябрь 2017 - 14:22

Цитата

Т.е. рассылка ведется по каждой записи отбора и шаблон заполняется только одной строкой?

Разумеется, всегда так было. Рассылка через функцию не отличается от рассылки через интерфейс, более того, там та же самая функция в итоге и задействуется.

Цитата

Тогда почему приходит только одна, остальные в статусе провалено.

А что пишет то? Просто "провалено" не бывает, всегда идет конкретная расшифровка. Зайдите в лог рассылки.

#39 AlexKrosh

    Новичок

  • Пользователи
  • Pip
  • 9 сообщений

Отправлено 18 Сентябрь 2017 - 09:29

Просмотр сообщенияCbCoder (15 Сентябрь 2017 - 14:22) писал:

Разумеется, всегда так было. Рассылка через функцию не отличается от рассылки через интерфейс, более того, там та же самая функция в итоге и задействуется.
Извиняюсь, смешал смысл функции form_template и send_template. Почему-то решил, что send_template должен сформированными фильтром строками заполнить приаттаченный шаблон печати.

Просмотр сообщенияCbCoder (15 Сентябрь 2017 - 14:22) писал:

А что пишет то? Просто "провалено" не бывает, всегда идет конкретная расшифровка. Зайдите в лог рассылки.
А вот тут пишет в логе "Дубликат". Хотя отбирает правильное количество, в sql-редакторе отбирается 21 строка.

#40 CbCoder

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

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

Отправлено 18 Сентябрь 2017 - 11:22

Значит во всех 21 строках один и тот же емейл, а в рассылках включена опция запрета дублирования писем. Это так?





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

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