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


При попытке отправить шаблон -


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

#1 z0ddak

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина
  • Город:Барнаул
  • Интересы:разработка

Отправлено 29 Ноябрь 2016 - 10:44

Добрый день.

Помогите разобраться, что за ошибка и что её вызывает.
Имеется такое элементарное вычисление,

if ($line['Статус платежа'] == "В процессе") {
	// заполняем поле
	$line['Время оплаты'] = date("Y-m-d H:i:s");
	// шлём оповещение  - На оплату
	send_template(270, "id=$ID");
} elseif ($line['Статус платежа'] == "Оплачено") {
	// заполняем поле
	$line['Время оплаты'] = date("Y-m-d H:i:s");
	// шлём оповещение  - Оплачено
	send_template(240, "id=$ID");
	// меняем Статус заявки в таблице Платежи
	$data = Array();
	$data['f4660'] = 'В работе';
	data_update(280, EVENTS_ENABLE, $data, "`id`= ",$line['ID Заказа']);
} elseif ($line['Статус платежа'] == "Не проведён") {
	// заполняем поле
	$line['Время оплаты'] = date("Y-m-d H:i:s");
	// шлём оповещение - платёж не проведён
	send_template(250, "id=$ID");
}

...запускаемое по событию: изменение поля Статус платежа. Поле Статус платежа, в свою очередь переключается внешним вычислением - добавлением записи с EVENTS_ENABLE

Всё работает, только не отправляются шаблоны. Вернее отправляются, но от пользователя Система (см. ниже) с вываливанием в ошибку: No access to template


					
					<br />
					<p class= Сообщение отредактировал z0ddak: 29 Ноябрь 2016 - 11:13


#2 CbCoder

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

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

Отправлено 29 Ноябрь 2016 - 13:15

Попробуйте

send_template(270, "id=$ID", 0, 0, 1);

В этом случае рассылка пойдет от имени первого пользователя (администратора).

#3 z0ddak

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина
  • Город:Барнаул
  • Интересы:разработка

Отправлено 29 Ноябрь 2016 - 13:36

Вы правы, отправилось от имени пользователя, но не помогло, к сожалению. Всё такая же ошибка No access to template


					
					<br />
					<p class= Сообщение отредактировал z0ddak: 29 Ноябрь 2016 - 14:07


#4 z0ddak

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина
  • Город:Барнаул
  • Интересы:разработка

Отправлено 29 Ноябрь 2016 - 17:18

никто не сталкивался с такой проблемой?..

#5 z0ddak

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина
  • Город:Барнаул
  • Интересы:разработка

Отправлено 30 Ноябрь 2016 - 16:22

Я так и не добился отправки...
Выяснилось ещё следующее - отправка работает только под учетной записью из КБ,
отправка же с внешнего обработчика так же вызывает No access to template

раньше слал почту с внешнего обработчика таким вычислением

	/******** Найдем нужную запись по email ************/
	$record_id = 0; // Инициализируем переменную
	//Выборка из базы
	$sqlQuery = "SELECT `id`,`f3721`,`f3850`,`f3860`,`f1470`,`f3870` FROM `" . DATA_TABLE . "42` WHERE `f442`='" . $vote_email . "' AND `status`=0 LIMIT 1";
	$result = sql_query($sqlQuery) or user_error(mysql_error() . "<br>" . $sqlQuery . "<br>", E_USER_ERROR);
	while ($row = sql_fetch_assoc($result)) {
		// Присваиваем значения переменным из массива части значений строки
		$record_id = $row['id'];
		$smarty_name = $row['f3721'];
		$smarty_patronymic = $row['f3850'];
		$smarty_sponsname = $row['f3860'];
		$smarty_login = $row['f1470'];
		$smarty_password = $row['f3870'];
		// Передаём значения Smarty в шаблон письма
		$smarty->assign("smarty_name", $smarty_name);
		$smarty->assign("smarty_patronymic", $smarty_patronymic);
		$smarty->assign("smarty_sponsname", $smarty_sponsname);
		$smarty->assign("smarty_login", $smarty_login);
		$smarty->assign("smarty_password", $smarty_password);
		// Отправляем шаблон письма
		send_template(190, "`id`=" . $record_id);
		// Создаём массив части значений строки
		$data = Array();
		$data['f4080'] = $record_id;
		$data['f4090'] = 'Напоминание пароля';
		$data['f4100'] = 'На Ваш e-mail отправлены учётные данные';
		// Добавляем в таблицу новую запись значениями из массива
		data_insert(280, EVENTS_ENABLE, $data);
	}
	echo 'DONE'; // Возвращаем сайту сообщение, что все в порядке
	if ($record_id == 0) {
		echo 'Нет такого E-mail в базе';
		exit;
	}

Сообщение отредактировал z0ddak: 30 Ноябрь 2016 - 16:25


#6 AntonKravchenko

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

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

Отправлено 02 Декабрь 2016 - 11:47

аналогичная проблема. Мало того, что "No access to template", так ещё и генерирует по 50-200 страниц (!) этих уведомлений. Заявка в ТП, пока в работе у них

#7 z0ddak

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина
  • Город:Барнаул
  • Интересы:разработка

Отправлено 02 Декабрь 2016 - 15:50

Просмотр сообщенияAntonKravchenko (02 Декабрь 2016 - 11:47) писал:

аналогичная проблема. Мало того, что "No access to template", так ещё и генерирует по 50-200 страниц (!) этих уведомлений. Заявка в ТП, пока в работе у них

Антон, вы как нибудь по другому решили этот вопрос или надеетесь всё таки получить ответ в "скором времени" от горе-разработчиков КБ? Одно лечат, другое калечат..
Просто проект горит, а рассылка почтовых оповещений в нём ключевой элемент. В какой уже раз "наступил на грабли", связавшись с разработкой на базе кб.

"Втюхивают" сырой продукт под эгидой борьбы с кровососущими насекомыми...

#8 AntonKravchenko

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

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

Отправлено 02 Декабрь 2016 - 18:35

Просмотр сообщенияz0ddak (02 Декабрь 2016 - 15:50) писал:

Антон, вы как нибудь по другому решили этот вопрос или надеетесь всё таки получить ответ в "скором времени" от горе-разработчиков КБ? Одно лечат, другое калечат..

надеюсь получить ответ, т.к. до недавних обновлений ревизии всё работало замечательно

#9 AntonKravchenko

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

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

Отправлено 05 Декабрь 2016 - 17:42

ревизия от 2.12.16 исправила этот баг

#10 Сан Саныч

    Участник

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

Отправлено 07 Декабрь 2016 - 14:11

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

#11 CbCoder

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

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

Отправлено 08 Декабрь 2016 - 09:45

К сожалению пока никак, на данный момент прикрепленные шаблоны формируются по той же строке что и письмо.

#12 z0ddak

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина
  • Город:Барнаул
  • Интересы:разработка

Отправлено 07 Февраль 2017 - 09:55

Просмотр сообщенияAntonKravchenko (05 Декабрь 2016 - 17:42) писал:

ревизия от 2.12.16 исправила этот баг

Антон, вы пишете что баг был исправлен, но обновившись до последней ревизии я обнаружил что всё те же ошибки остались...
У меня версия WEB: php 5.6 и максимум на что можно обновить ревизию - это на 17174 от 2017-01-31...



					
					<br />
					<p class= Сообщение отредактировал z0ddak: 07 Февраль 2017 - 10:06


#13 maksn

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

  • Пользователи
  • PipPipPip
  • 314 сообщений
  • Пол:Мужчина

Отправлено 07 Февраль 2017 - 10:46

Просмотр сообщенияz0ddak (02 Декабрь 2016 - 15:50) писал:

Просто проект горит, а рассылка почтовых оповещений в нём ключевой элемент. В какой уже раз "наступил на грабли", связавшись с разработкой на базе кб.
Ну, уж если проект горит, и "никакие корректировки прав отправляющего send_template(270, "id=$ID", 0, 0, 1) не спасают ситуацию",
забейте на send_template. Формируйте самостоятельно тело письма и отправляйте его sendmail

Сообщение отредактировал maksn: 07 Февраль 2017 - 10:47

"...Сижу, паяю. CRM починяю..."
Мои разработки

#14 CbCoder

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

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

Отправлено 07 Февраль 2017 - 11:26

Цитата

Формируйте самостоятельно тело письма

Кстати да, можно самостоятельно формировать письмо по существующему шаблону, через функцию form_template($form, $line, 'body_form'), где $form - строка шаблона из служебной таблицы forms, $line - строка вашей таблицы, для которой формируется письмо. Затем вставляете результат в sendmail.

$form = sql_select_array(FORMS_TABLE, "id=270");
$body = form_template($form, $line, 'body_form');


#15 CbCoder

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

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

Отправлено 15 Февраль 2017 - 10:19

Откорректированный полный вариант, отправка по текущей записи в вычислении:

$form = sql_select_array(FORMS_TABLE, "id=270");
$subject = form_template($form, $line, 'subj_mail');
$body = form_template($form, $line, 'body_form');
$to = $line[form_int_name($form['to_mail'])];
sendmail($subject, $body, $to);

Примечание: тут не учитывается вариант адресата из поля связи и не прикрепляются файлы.

#16 z0ddak

    Участник

  • Пользователи
  • PipPip
  • 23 сообщений
  • Пол:Мужчина
  • Город:Барнаул
  • Интересы:разработка

Отправлено 21 Февраль 2017 - 17:42

Просмотр сообщенияCbCoder (15 Февраль 2017 - 10:19) писал:

Откорректированный полный вариант, отправка по текущей записи в вычислении:

$form = sql_select_array(FORMS_TABLE, "id=270");
$subject = form_template($form, $line, 'subj_mail');
$body = form_template($form, $line, 'body_form');
$to = $line[form_int_name($form['to_mail'])];
sendmail($subject, $body, $to);

Примечание: тут не учитывается вариант адресата из поля связи и не прикрепляются файлы.

Спасибо, принял к сведению...

#17 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 22 Февраль 2017 - 15:11

такой код в кроне
$form = sql_select_array(FORMS_TABLE, "id=290");
$subject = form_template($form, 13376, 'subj_mail');
$body = form_template($form, 13376, 'body_form');
$to = $line[form_int_name($form['to_mail'])];

выводит шаблон, но подставляемые поля не заполняются.
при просмотре из записи все ок.

куда копать?

выводит в смысле r_print естественно

#18 CbCoder

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

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

Отправлено 22 Февраль 2017 - 16:05

А вы прочли что я написал перед кодом?

Цитата

отправка по текущей записи в вычислении

Т.е. про крон там ничего нет. В кроне надо вначале получить запись из нужной таблицы и поместить ее в переменную $line. В вычислениях эта переменная уже заполнена автоматом.

#19 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 22 Февраль 2017 - 16:17

все получилось

$line = data_select_array(43, "`id`=13376");
$form = sql_select_array(FORMS_TABLE, "id=290");
$subject = form_template($form, $line, 'subj_mail');
$body = form_template($form, $line, 'body_form');
$to = $line[form_int_name($form['to_mail'])];

спасибо

#20 Tony999

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

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

Отправлено 31 Июль 2017 - 04:59

"Косяк" продолжается и в самой новой версии...
Письмо, да, по шаблону можно сделать с таким "костылем", но стандартные и удобные средства очереди рассылки, как я понимаю, будут недоступны.
Надо писать в ТП, пусть сделают.
Умные сайты на заказ
https://info.crm-master.info





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

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