Symfony2 FosuserBundle: 重新发送注册确认电子邮件。

10

PHP框架:Symfony2.6

问题:我想要向FosUserBundle添加以下功能:“管理员可以在网站的管理部分,重新发送注册确认邮件给特定用户。”

我已经建立了“用户详细信息”页面,在该页面中,管理员可以查看注册表单中输入的所有信息以及用户是否已启用/确认。如果用户未启用,则我将添加一个按钮来重新发送确认电子邮件。


另一种解决方案是,在用户尝试使用未确认的凭据登录后,向用户显示一个链接。这里有一个类似的问题(很遗憾没有反馈,并且只涵盖了第二种方法):

https://stackoverflow.com/questions/25204877/re-sending-confirmation-email-fosuserbundle

请问你能否指向最简单和最快速的解决方案?


我想知道,您是否已经检查了我的答案并考虑接受它作为答案? - Andrei Herford
感谢您的输入。标志已更新。 - Igor Carmagna
2个回答

12

我知道这是一个旧问题,但今天我遇到了同样的问题,并找到了一个更简单的解决方法。也许这对其他人也有帮助:

只需向FOSUserBundle询问其mailer,并使用它重新发送邮件即可:

$mailer = $this->get('fos_user.mailer');                    
$mailer->sendConfirmationEmailMessage($user);

完成了!这将重新发送确认邮件的完全副本,因为使用相同的FOSUserBundle代码。无需手动重新创建消息。


1
非常感谢您的输入。我会尽快验证并接受您的答案作为正确解决方案。 - Igor Carmagna

8

以下是所需的步骤。假设:

  • config.yml 中,fos_user.service.mailer: fos_user.mailer.twig_swift
  • 已知用户电子邮件地址

控制器(Controller)

/**
 * @Route("/remind")
 *
 */
    class RemindController extends Controller
    {
        /**
         * @Route("/{email}")
         * @Template()
         */
        public function remindAction($email)
        {
            $user = $this->get('fos_user.user_manager')->findUserByEmail($email);
            $url = $this->generateUrl('fos_user_registration_confirm', array('token' => $user->getConfirmationToken()), true);

            $message = \Swift_Message::newInstance()
                    ->setSubject('Registration confirmation')
                    ->setFrom('admin@acmedemo.com')
                    ->setTo($email)
                    ->setContentType('text/html')
                    ->setBody(
                    $this->renderView(
                            "AcmeDemoBundle:Remind:email.html.twig", array(
                        'user' => $user,
                        'confirmationUrl' => $url))
                    )
            ;
            $sent = $this->get('mailer')->send($message);

            return ['user' => $user, 
                'url' => $url,
                'success' => $sent ? 'Yes' : 'No'];
        }
    }

极简主义AcmeDemoBundle:Remind:remind.html.twig模板

{{ user.email }}<br>
{{ url }}<br>
{{ success }}

极简主义 AcmeDemoBundle:Remind:email.html.twig 模板

Please confirm your registration by visiting <a href="{{ confirmationUrl }}">this link</a>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接