Отключить регистрацию уведомлений по электронной почте

20

Я провел глубокое исследование в Интернете и также попробовал много альтернативных решений, но я не нашел никакого решения, чтобы отключить уведомление по электронной почте для новых пользователей.

В моих настройках пользователя у меня установлен флажок «Посетители могут создавать учетные записи, но требуется одобрение администратора», а параметр «Требовать подтверждение электронной почты, когда посетитель создает учетную запись» не отмечен.

Есть ли у вас какие-либо идеи?

lnunesbr
источник

Ответы:

32

Если вы посмотрите на функцию _user_email_notify () , она проверяет переменную, 'user_mail_' . $op . '_notify'должна ли она отправлять электронное письмо или нет. Предполагая, что вы отключили подтверждение по электронной почте (в противном случае отключение почтовых уведомлений было бы странно;)), $ op имеет значение 'register_no_approval_required'. Таким образом, полное имя переменной 'user_mail_register_no_approval_required_notify'.

Кажется, нет пользовательского интерфейса для этой переменной. Однако вы можете установить его в файле settings.php, добавив следующую строку в конец файла settings.php (возможно, внутри sites / default).

$conf['user_mail_register_no_approval_required_notify'] = FALSE;

Вы можете сделать то же самое для других почтовых уведомлений; другие возможные $opзначения перечислены на связанной странице.

Berdir
источник
Огромное спасибо. Сложно поверить, что здесь нет настроек администратора.
Касимзее
На самом деле, я вижу вариант использования для предотвращения электронных писем с требованием подтверждения пользователя. Системные электронные письма довольно ограничены, если вы хотите отправлять html-письма или изменять ответ в зависимости от роли пользователя, поэтому я вижу желание перенять этот рабочий процесс с помощью Правил и пользовательских писем. Спасибо @Berdir.
doub1ejack
К вашему сведению, модуль 'mailcontrol' ниже - это то же самое решение, свернутое в простой модуль. Не забывайте об этом.
doub1ejack
8

Вы можете использовать модуль Mailcontrol .

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

Получите полный контроль над почтой по умолчанию, отправляемой Drupal 7 из коробки.

Описание

Этот небольшой модуль расширяет исходную страницу настроек учетной записи Drupal 7 возможностью глобального включения / выключения всех стандартных писем. По умолчанию в Drupal 7 нет возможности глобально отключать следующие письма:

  • Добро пожаловать (новый пользователь создан администратором)
  • Добро пожаловать (в ожидании одобрения)
  • Добро пожаловать (одобрение не требуется)
  • Восстановление пароля
Reszli
источник
4

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

function your_module_form_user_admin_settings_alter(&$form, &$form_state) {

  // allow admin to choose if a notification mail is sent to no approval required users
  form['email_no_approval_required']['user_mail_register_no_approval_required_notify'] = array(
    '#type' => 'checkbox',
    '#title' => t('Notify user when account is created.'),
    '#default_value' => variable_get('user_mail_register_no_approval_required_notify', FALSE),
  );
}
Будет
источник
4

В Drupal 7:

Вы можете редактировать таблицу переменных напрямую: name: user_mail_status_activation_notify значение: i: 0;

или в вашем файле template.php:

if(variable_get('user_mail_status_activated_notify') == 1){
    variable_set('user_mail_status_activated_notify', 0);
}
Крис Каллендер
источник
1

Есть флажок, чтобы отключить в admin / user / user / create. Для меня это отключено по умолчанию.

Пол Деллайера
источник
Да, это действительно должно работать, но я имею в виду, в случае анонимной регистрации, не отправлять автоматическое уведомление по электронной почте.
lnunesbr
@Inunesbr Что вы имеете в виду под «анонимной регистрацией»?
kiamlaluno
@kiamlaluno посетитель, который самостоятельно создает учетную запись в «user / register»
lnunesbr
0

Для Drupal 8 следующая работа для меня.

Следующий код не отправляет письмо после регистрации.

/**
 * Implements hook_mail_alter().
 *
 * Don't send any mail during registration.
 */
function mymodule_mail_alter(&$message) {
  if ($message['id'] == 'user_register_no_approval_required' && $message['key'] == 'register_no_approval_required') {
      $message['send'] = FALSE;
      return;
  }
}
Виджей
источник