FOSUser Bundle手动触发确认电子邮件

时间:2013-08-01 13:01:18

标签: email symfony registration fosuserbundle confirmation

我使用FOSUser Bundle作为我自己的User类的基础类。通过网络服务,可以创建新用户。

据我所知,只有在用户通过注册表自我注册时才会触发。

有没有办法从控制器手动触发确认电子邮件?

2 个答案:

答案 0 :(得分:4)

这对我有用

$mailer = $this->container->get('fos_user.mailer');
// Create token
$token = sha1(uniqid(mt_rand(), true)); // Or whatever you prefer to generate a token
$user->setConfirmationToken($token);
$mailer->sendConfirmationEmailMessage($user);

答案 1 :(得分:1)

似乎没有手动触发确认电子邮件发送的解决方案。它仅与注册结合触发。我最终做的是伪造一个表单并发送它以触发负责发送电子邮件的事件监听器。

//use FOS\UserBundle\FOSUserEvents;
//use FOS\UserBundle\Event\FormEvent;

$formFactory = $this->get('fos_user.registration.form.factory');
$form = $formFactory->createForm();
$form->setData($user); // created user object
$event = new FormEvent($form, $request); // request of the Controller
$dispatcher = $this->get('event_dispatcher');
$dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event);

不是一个干净的解决方案,但是我唯一能提出的解决方案,因为FOSUserBundle似乎没有提供任何类型的API。