Не отправляется письмо на email

Здравствуйте!

На небольшом сайте, после проведения оплаты, пользователь попадает на страницу об Успешной оплате. Есть сниппет, который берет данные из POST-запроса и создает пользователя.

Далее в сниппете генерируется пароль и он должен отправляться пользователю на почту, но этого не происходит, хотя пользователь создается.

В журнале ошибок появляется только это:

[2021-02-02 13:49:21] (ERROR @ /var/www/vhosts/site.kz/site.kz/core/xpdo/xpdo.class.php: 1320) Could not get table class for class: modAccess
[2021-02-02 13:49:21] (ERROR @ /var/www/vhosts/site.kz/site.kz/core/xpdo/xpdo.class.php: 1289) Could not get table name for class: modAccess
[2021-02-02 13:49:21] (ERROR @ /var/www/vhosts/site.kz/site.kz/core/xpdo/om/xpdoobject.class.php: 240) Error 42000 executing statement:
Array
(
[0] => 42000
[1] => 1064
[2] => You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AS `modAccess` WHERE `modAccess`.`principal` = 36' at line 1
)
Код сниппета:
<?php
// создаем пользователя
$user = $modx->newObject('modUser');

// функция генерации пароля
function rand_string( $length ) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    return substr(str_shuffle($chars),0,$length);
}

// задаем имя пользователя и пароль
$useremail = $_POST['CUSTOMER_EMAIL'];
$userpswd = rand_string(6);
$user->set('username', $useremail);
$user->set('password', $userpswd);
// сохраняем
$user->save();

// создаем профиль
$profile = $modx->newObject('modUserProfile');
// инициализируем поля
$profile->set('email', $useremail);
// добавляем профиль к пользователю
$user->addOne($profile);

// сохраняем
$profile->save();
$user->save();

// список групп
$groupsList = array('users');

$groups = array();
foreach($groupsList as $groupName){
  // получаем группу по имени
  $group = $modx->getObject('modUserGroup', array('name' => $groupName));
  // создаем объект типа modUserGroupMember
  $groupMember = $modx->newObject('modUserGroupMember');
  $groupMember->set('user_group', $group->get('id'));
  $groupMember->set('role', 1); // 1 - это членство с ролью Member
  $groups[] = $groupMember;
}

// добавляем пользователя в группы
$user->addMany($groups);
$user->save();

// отправка пароля на почту
$message = "Ваш пароль для доступа к Практикуму: $userpswd";

$modx->getService('mail', 'mail.modPHPMailer');
$modx->mail->set(modMail::MAIL_BODY,$message);
$modx->mail->set(modMail::MAIL_FROM,'info@site.kz');
$modx->mail->set(modMail::MAIL_FROM_NAME,'SoftSkills');
$modx->mail->set(modMail::MAIL_SUBJECT,'Пароль для доступа к практикуму');
$modx->mail->address('to', $useremail);
$modx->mail->setHTML(true);
if (!$modx->mail->send()) {
    $modx->log(modX::LOG_LEVEL_ERROR,'An error occurred while trying to send the email: '.$modx->mail->mailer->ErrorInfo);
}
$modx->mail->reset();
Lori
02 февраля 2021, 10:51
modx.pro
416
0

Комментарии: 8

Артур Шевченко
02 февраля 2021, 11:25
0
А вообще письма с сервера отправляются?
    Lori
    02 февраля 2021, 11:32
    0
    да, отправляются. Есть форма обратной связи ajaxFrom, где в &emailFrom стоит тот же email, что и в сниппете.
      Артур Шевченко
      02 февраля 2021, 11:37
      0
      Вы смотрели что в сниппет приходит и на какой строке останавливается выполнение, есть вероятность, что до отправки вообще не доходит.
    Артур Шевченко
    02 февраля 2021, 11:39
    0
    Это ваш код? Почему нет проверки на существоdание пользователя с таким username?
      Lori
      02 февраля 2021, 11:45
      0
      Нет, взял с интернета.
      Странно. Не отправляется письмо, когда заполняется email из autocomplete, а при ручном вводе — отправляется
        Артур Шевченко
        02 февраля 2021, 12:04
        0
        Значит что-то с email не так.
        $modx->log(1, print_r($_POST,1));
        вам в помощь
          Lori
          02 февраля 2021, 12:18
          0
          С письмом разобрались уже. Короче платеж происходит на стороне системы, после проведения платежа post-запросом отправляются данные на наш сайт, в том числе и email. Сниппет пользователя создает, а вот email с запроса не цепляет
            Александр Мельник
            02 февраля 2021, 12:40
            0
            Звучит как описание проблемы, а не ее решение.
            а вот email с запроса не цепляет
            почему?
            Думаю все таки будет полезно распечатать содержимое POST
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8