Узнать, на какой адрес отправляется письмо из eForm

Добрый день!

Ситуация следующая: на обработке заявок сидит несколько менеджеров, поэтому в параметр [to] для eForm в сниппете вызова подставляется очередной адрес. Этот адрес записывается в переменную $_SESSION[«sendto»] и через параметр &sessionVars он передается в шаблон, где записывается в скрытое поле. При отправке формы в обработчике eFormOnBeforeMailSent — все данные из анкеты записываются в базу и письмо благополучно уходит. Как выяснилось, периодически где то сбоит и письмо уходит не на тот адрес, который был записан в скрытом поле. Можно как то определить, например в обработчике &eFormOnMailSent на какой адрес действительно было отправлено письмо, т.е. что изначально было записано в параметр [to]?

7 комментариев

avatar
подставляйте два адреса в параметр to через запятую, один менеждера (изменяемый), второй админа (постоянный), и пиьма будут дублироваться дл конторля и в получателях видно вторую почту
avatar
Так основная проблема в том, что в базу уже может записаться неправильный адрес сотрудника-получателя, т.е. письмо успешно доходит и на него ответит кто-то из менеджеров, но в базе оно уже висит на другом сотруднике и начинается путаница.
avatar
Экий вы адский любитель спама — раз решаетесь зачем-то подставлять почту прямо в форму (хоть и в скрытое поле). Почему бы просто не определять этот ящик в обработчике eFormOnBeforeMailSent без показа роботам (раз уж вы им и так пользуетесь).
avatar
Так я как раз и хочу узнать, как адрес, который был в параметре [to] можно узнать из обработчика.
avatar
По идее все параметры вызова сниппета доступны в объекте внутри самого сниппета

$modx->Event->params


Соответственно в любой функции вы можете сделать сначала
global $modx;
, чтобы получить доступ к $modx (если не смогли передать его как один из параметров в функцию напрямую).
Комментарий отредактирован 2015-12-17 11:55:11 пользователем webber
avatar
Огромное спасибо, все сделал!
avatar
Ребят, минуло 6 лет и вот что-то пошло не так! Для передачи email в скрипт использовал конструкцию в событии eFormOnBeforeMailSent
global $modx;
$prm=$modx->Event->params;
$email = $prm[to];

Вроде бы ничего не менял и не трогал, но теперь $modx->Event->params дает NULL!

Попробовал в другом снипете — параметры показывает. Может кто сталкивался, где искать? Evolution 1.4.15, Eform 1.4.9
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.