将新用户电子邮件确认发送到特定电子邮件地址域

时间:2012-09-07 22:47:23

标签: magento magento-1.7

在我的Magento安装中,我已禁用“需要电子邮件确认”功能,因为我不需要为所有用户使用它。但是,我想让特定域名的用户“foo.com”实际收到此电子邮件确认。

一旦他们通过电子邮件链接确认他们的电子邮件地址,我就会将他们添加到特定的群组。

任何人都可以向我提供任何关于我应该从这种Magento修改开始的方向吗?非常感谢你!

1 个答案:

答案 0 :(得分:1)

您可以扩展或覆盖

app/code/core/Mage/Customer/controllers/AccountController.php

public function createPostAction()
{
    if (true === $validationResult) {
        $customer->save();

        // Do your custom Code here to match the domains you want to make Confirmation Required for them.
        $patterns = array('@foo.com','@boo.com','@bar.com');
        $patterns_flattened = implode('|', $patterns);
        if ( preg_match('/'. $patterns_flattened .'/i', $customer->getEmail(), $matches) )
        {  
            $customer->setIsConfirmationRequired(true);
        }

       if ($customer->isConfirmationRequired()) {
            $customer->sendNewAccountEmail('confirmation', $this->_getSession()->getBeforeAuthUrl());
            $this->_getSession()->addSuccess($this->__('Account confirmation is required. Please, check your e-mail for confirmation link. To resend confirmation email please <a href="%s">click here</a>.',
                Mage::helper('customer')->getEmailConfirmationUrl($customer->getEmail())
           ));
            $this->_redirectSuccess(Mage::getUrl('*/*/index', array('_secure'=>true)));
            return;
        }
        else {
            $this->_getSession()->setCustomerAsLoggedIn($customer);
            $url = $this->_welcomeCustomer($customer);
            $this->_redirectSuccess($url);
            return;

        }
    }
}

所以你可以用两种方式做到这一点

启用激活电子邮件并设置$customer->setIsConfirmationRequired(false);如果电子邮件与您要验证的域不匹配(推荐)

禁用激活电子邮件,如果电子邮件与您要验证的域匹配,则设置$customer->setIsConfirmationRequired(true);

由于