Не отправляется письмо на email
Здравствуйте!
На небольшом сайте, после проведения оплаты, пользователь попадает на страницу об Успешной оплате. Есть сниппет, который берет данные из POST-запроса и создает пользователя.
Далее в сниппете генерируется пароль и он должен отправляться пользователю на почту, но этого не происходит, хотя пользователь создается.
В журнале ошибок появляется только это:
На небольшом сайте, после проведения оплаты, пользователь попадает на страницу об Успешной оплате. Есть сниппет, который берет данные из 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();
Комментарии: 8
А вообще письма с сервера отправляются?
да, отправляются. Есть форма обратной связи ajaxFrom, где в &emailFrom стоит тот же email, что и в сниппете.
Вы смотрели что в сниппет приходит и на какой строке останавливается выполнение, есть вероятность, что до отправки вообще не доходит.
Это ваш код? Почему нет проверки на существоdание пользователя с таким username?
Нет, взял с интернета.
Странно. Не отправляется письмо, когда заполняется email из autocomplete, а при ручном вводе — отправляется
Странно. Не отправляется письмо, когда заполняется email из autocomplete, а при ручном вводе — отправляется
Значит что-то с email не так.
$modx->log(1, print_r($_POST,1));
вам в помощь
С письмом разобрались уже. Короче платеж происходит на стороне системы, после проведения платежа post-запросом отправляются данные на наш сайт, в том числе и email. Сниппет пользователя создает, а вот email с запроса не цепляет
Звучит как описание проблемы, а не ее решение.
Думаю все таки будет полезно распечатать содержимое POST
а вот email с запроса не цепляетпочему?
Думаю все таки будет полезно распечатать содержимое POST
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.