禁用注册电子邮件通知


20

我已经在网络上进行了深入研究,还尝试了许多替代解决方案,但没有找到任何解决方案来禁用新用户的电子邮件通知。

在我的用户设置中,我选中了“访问者可以创建帐户,但需要管理员批准”选项,未选中“访问者创建帐户时要求电子邮件验证”选项。

你有什么主意吗?

Answers:


32

如果查看函数_user_email_notify(),它将检查该变量'user_mail_' . $op . '_notify'是否应该发送电子邮件。假设您已禁用电子邮件确认(否则,禁用邮件通知会很奇怪;),则$ op为'register_no_approval_required'。因此完整的变量名称为'user_mail_register_no_approval_required_notify'

该变量似乎没有用户界面。但是,您可以在settings.php中进行设置,在settings.php的末尾添加以下行(可能在站点/默认位置)。

$conf['user_mail_register_no_approval_required_notify'] = FALSE;

您也可以对其他邮件通知执行相同的操作;其他可能的$op值在链接的页面上列出。


非常感谢。很难相信没有管理员设置。
qasimzee

实际上,我可以看到一个用例来防止需要用户确认的电子邮件。如果您要发送html电子邮件或根据用户角色更改响应,则系统电子邮件非常有限,因此我可以看到希望使用“规则”和“自定义电子邮件”来接管此工作流程。感谢@Berdir。
doub1ejack

仅供参考,下面的“ mailcontrol”模块是将相同的解决方案集成到一个简单的模块中。不要忽略它。
doub1ejack

8

您可以使用Mailcontrol模块。

它允许您直接从UI打开/关闭任何您希望的标准Drupal邮件。

开箱即用,完全控制Drupal 7发送的默认邮件。

描述

这个小模块扩展了原始的Drupal 7帐户设置页面,可以全局打开/关闭所有标准邮件。默认情况下,Drupal 7不提供全局禁用以下邮件的选项:

  • 欢迎(管理员创建的新用户)
  • 欢迎(正在等待批准)
  • 欢迎(无需批准)
  • 找回密码


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中:

您可以直接编辑变量表:名称:user_mail_status_activated_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,2011年

@Inunesbr“匿名注册”是什么意思?
kiamlaluno

@kiamlaluno自己在“用户/注册”中创建帐户的访客
lnunesbr,2011年

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;
  }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.