Wyłącz powiadomienia e-mail dotyczące rejestracji

20

Przeprowadziłem głębokie badania w Internecie i wypróbowałem wiele alternatywnych rozwiązań, ale nie znalazłem żadnego rozwiązania, które mogłoby wyłączyć powiadomienia e-mail dla nowych użytkowników.

W ustawieniach użytkownika mam opcję „Użytkownicy mogą tworzyć konta, ale wymagana jest zgoda administratora”, a opcja „Wymagaj weryfikacji e-mail, gdy użytkownik tworzy konto” nie jest zaznaczona.

Masz jakiś pomysł?

lnunesbr
źródło

Odpowiedzi:

32

Jeśli spojrzysz na funkcję _user_email_notify () , sprawdzi ona zmienną, 'user_mail_' . $op . '_notify'czy powinna wysłać wiadomość e-mail, czy nie. Zakładając, że wyłączyłeś potwierdzenie e-mailem (w przeciwnym razie wyłączenie powiadomień pocztowych byłoby dziwne;)), $ op jest 'register_no_approval_required'. Pełna nazwa zmiennej to 'user_mail_register_no_approval_required_notify'.

Wydaje się, że nie ma interfejsu użytkownika dla tej zmiennej. Możesz go jednak ustawić w pliku settings.php, dodając następujący wiersz na końcu settings.php (prawdopodobnie w witrynach / domyślnie).

$conf['user_mail_register_no_approval_required_notify'] = FALSE;

To samo możesz zrobić w przypadku innych powiadomień pocztowych; inne możliwe $opwartości są wymienione na połączonej stronie.

Berdir
źródło
Dziękuję bardzo. Tak trudno uwierzyć, że nie ma ustawień administratora.
qasimzee
W rzeczywistości widzę przypadek użycia zapobiegający wymaganiom e-maili z potwierdzeniem użytkownika. Systemowe wiadomości e-mail są dość ograniczone, jeśli chcesz wysyłać wiadomości e-mail w formacie HTML lub zmieniać odpowiedź według roli użytkownika, więc widzę, że chcę przejąć ten przepływ pracy z regułami i niestandardowymi wiadomościami e-mail. Dzięki @Berdir.
doub1ejack
Do Twojej wiadomości, poniższy moduł „mailcontrol” to to samo rozwiązanie w prosty moduł. Nie przeocz tego.
doub1ejack
8

Możesz użyć modułu Mailcontrol .

Umożliwia włączanie / wyłączanie dowolnej standardowej poczty Drupal, którą chcesz bezpośrednio z interfejsu użytkownika.

Pełna kontrola nad domyślnymi wiadomościami e-mail wysyłanymi przez Drupala 7 po wyjęciu z pudełka.

Opis

Ten mały moduł rozszerza oryginalną stronę ustawień konta Drupal 7 o możliwość globalnego włączania / wyłączania wszystkich standardowych wiadomości e-mail. Domyślnie Drupal 7 nie zapewnia opcji globalnego wyłączenia następujących wiadomości e-mail:

  • Witamy (nowy użytkownik utworzony przez administratora)
  • Witamy (oczekuje na zatwierdzenie)
  • Witamy (bez zgody)
  • Odzyskiwanie hasła
Reszli
źródło
4

Możesz użyć tego w niestandardowym module, aby dodać ustawienia w polu wyboru, tak jak dzieje się to w ustawieniach aktywacji konta.

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),
  );
}
Wola
źródło
4

W Drupal 7:

Możesz bezpośrednio edytować tabelę zmiennych: name: user_mail_status_activated_notify wartość: i: 0;

lub w pliku template.php:

if(variable_get('user_mail_status_activated_notify') == 1){
    variable_set('user_mail_status_activated_notify', 0);
}
Chris Callender
źródło
1

Jest pole wyboru do wyłączenia w admin / user / user / create. Dla mnie jest domyślnie wyłączona.

Pol Dellaiera
źródło
Tak, to naprawdę powinno działać, ale miałem na myśli, że w przypadku anonimowej rejestracji nie wysyłaj automatycznego powiadomienia e-mail.
lnunesbr
@Inunesbr Co rozumiesz przez „anonimową rejestrację”?
kiamlaluno
@kiamlaluno gość, który sam tworzy konto w „użytkownik / rejestr”
lnunesbr
0

Dla Drupala 8 praca dla mnie.

Poniższy kod nie wysyła wiadomości e-mail po rejestracji.

/**
 * 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;
  }
}
Vijay
źródło