Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Общие вопросы Обратная связь, проблема с отправкой

Обратная связь, проблема с отправкой


     07.05.2014    Общие вопросы    3363

вопрос
Всем привет,
появилась проблема, при отправке сообщения через обратную связь, двиг выдает:
"Вы не можете отправлять данному пользователю E-Mail сообщений"

Я удалил из TPL'ки выбор получателя (администрацию), после чего залез в feedback.php и заменил строчку
$recip = intval( $_POST['recip'] );
на
$recip = 1;

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

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

Версия движка 10.0

Ответил: Twelvee


Вы убрали из шаблона список получателей - тег {recipient}
Соответственно, нужно добавить его
Если пользователь в списке один и само поле не нужно, можно скрыть его так
<div style="display: none;">{recipient}</div>


Source: http://forum.searchengines.ru/showthread.php?t=784839

Комментарии пользователей (15)

shutka
30 | 1

shutka - 7 мая 2014 16:18 - Юзер

Насколько я понимаю, {recipient} используется для того чтобы в $recip присвоить выбранное значение, через intval( $_POST['recip'] );
Я же просто присвоил туда единицу. И на другом сайте у меня отправка работает без использования {recipient} в TPL'ке.

display: none; мог бы сразу сделать, не хочу

Twelvee
15

124 | 25

Twelvee - 7 мая 2014 17:38 - Юзер

В переменную $recip необходимо передать значение user_id. Посмотрите, возможно у Вас другой id пользователя.
Так же. $recip = '1';

vitnet
218

2172 | 930

vitnet - 7 мая 2014 19:05 - Эксперт

Вам это о чем то говорит?
$recip = intval( $_POST['recip'] );

и
 AND allow_mail = '1'

shutka
30 | 1

shutka - 7 мая 2014 20:23 - Юзер

В переменную $recip необходимо передать значение user_id. Посмотрите, возможно у Вас другой id пользователя.
Так же. $recip = '1';

Пользователь всего один и id=1 т.е. то что прописал $recip = 1; вроде должно подходить.

vitnet, мне ни о чем, я в php не шарю, поясни пожалуйста.

vitnet
218

2172 | 930

vitnet - 7 мая 2014 20:43 - Эксперт

В своем профиле ставили галочку "Не получать письма от других"?

shutka
30 | 1

shutka - 7 мая 2014 20:47 - Юзер

Это дефолтный администратор, созданный при установке движка, поэтому в профиль не лазил, ни чего не менял. Да и личного кабинета на сайте нет как такового, максимум в админке захожу в редактирование пользователя, но что-то не вижу там такого пункта.

vitnet
218

2172 | 930

vitnet - 7 мая 2014 21:00 - Эксперт

Как видите данная ошибка возникает в случае отсутствия получателя (точнее его имени), то есть:
if( !$user_group[$member_id['user_group']]['allow_feed'] ) {
    $recipient = $db->super_query( "SELECT name, email, fullname, user_group FROM " . USERPREFIX . "_users WHERE user_id='" . $recip . "' AND user_group = '1'" );
} else {
    $recipient = $db->super_query( "SELECT name, email, fullname, user_group FROM " . USERPREFIX . "_users WHERE user_id='" . $recip . "' AND allow_mail = '1'" );
}
...
...
if( !$recipient['name'] ) $stop .= $lang['feed_err_8']; // < -- "Вы не можете отправлять данному пользователю E-Mail сообщений"

shutka
30 | 1

shutka - 7 мая 2014 21:17 - Юзер

vitnet, так получатель вроде указан - $recip = 1; Разве нет?

vitnet
218

2172 | 930

vitnet - 7 мая 2014 22:04 - Эксперт

А $recipient['name'] что показывает?

shutka
30 | 1

shutka - 7 мая 2014 22:24 - Юзер

vitnet, полагаю что этим дергается имя получателя, для указанного id (в моем случае для id=1), но я не пойму суть условия: Если (пользователь) то выдавай ошибку. Так что-ли?

Я действительно не понимаю в php, так в общих чертах просто по логике читаю код и пытаюсь понять интуитивно (ну и методом тыка прописал в $recip = 1 на другом сайте - все окей, а тут проблема при отправке).

cybernatic
12

124 | 125

cybernatic - 8 мая 2014 10:53 - Эксперт

В настройках профиля под ID 1 заполните поле Имя и все будет хорошо

shutka
30 | 1

shutka - 16 мая 2014 15:10 - Юзер

Так, разобрался, нужно было еще в engine/ajax/feedback.php прописать единичку в $recip = '1'

Теперь письма уходят, но в письме почему-то пишется что отправитель admin и его ящик указан. Т.е. не те данные, которые указывает человек используя обратную связь, а данные админа.

shutka
30 | 1

shutka - 16 мая 2014 15:22 - Юзер

В шаблоне письма такие строки:

Данное письмо вам отправил {%username_from%}
E-mail отправителя: {%email%}

и сюда почему-то подставляется имя и ящик админа, а не те, которые были введены в поля обратной связи.

shutka
30 | 1

shutka - 19 мая 2014 14:27 - Юзер

Вопрос исчерпан, помог саппорт DLE, оказывается, если я авторизован на сайте, то даже если что-то писать в обратной связи - подставляются данные из профиля (хоть это и не видно).

vitnet
218

2172 | 930

vitnet - 19 мая 2014 16:32 - Эксперт

А вы думали вам из полей пропишет? Там же есть условие, если пользователь авторизован берутся его данные, если гость то из полей ;)

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы