首页 > 解决方案 > 如何使用 FOSUserBundle 在我的邮件中包含激活链接?

问题描述

我知道可以通过 fosuserbundle 发送带有激活 lein 的确认电子邮件。只是,我希望我可以在需要时自己插入。

我有用户提出帐户创建请求,我必须手动接受(或拒绝)他们。如果我接受他们,他们会使用 SwiftMail 收到一封包含其凭据的电子邮件。但我也希望能够插入这个著名的激活链接,以便当他们单击它时,它将用户实体的“启用”变量传递给 true。

目前,我可以:

恢复我要处理的用户,以及他的信息。创建一封电子邮件并通过 SwiftMail 服务将其发送给他,方法是向他发送他的凭据。

我所要做的就是添加一个功能或其他东西,让我在这封电子邮件中创建一个特定于用户的激活链接。

我的代码:

在我的 Controller.php 中:

$prenom  = $user->getPrenom();
$nom     = $user->getNom();
$email   = $user->getEmail();

$this->sendMail($prenom,$nom);

回到这个函数:

public function sendMail($prenom,$nom,$email)
    {
        $transport = \Swift_SmtpTransport::newInstance();

                // Create the Mailer using your created Transport
                $mailer = new \Swift_Mailer($transport);

                $message = \Swift_Message::newInstance()
                                ->setSubject("subject of the mail")
                                ->setFrom(array('*******' => '*****'))
                                ->setTo($email)
                                ->setCharset('utf-8')
                                ->setContentType('text/html')
                                ->setBody($this->renderView("@Pages/swiftmail/activation.html.twig",array(
                                    'prenom'=>$prenom,
                                    'nom'=>$nom,
                                )));

        $mailer->send($message);
    }

我的电子邮件正文在activation.html.twig

<p>Bonjour {{prenom}} {{nom}},</p>

<p>Votre compte a bien été validé.</p>

<p><i>Votre identifiant de connexion est : <b>{{login}}</b></i><br/>
<i>Votre mot de passe est : <b>{{mdp}}</b></i></p>

<p>Ce compte sera automatiquement désactivé après 400 jours ou après le téléchargement des paquets d'installation.</p>
<p>Cordialement,</p>

<span style="font-size:9px"><em>Ce mail a été généré automatiquement, merci de ne pas y répondre.</em></span><br/><br/>

所以我想在activation.html.twig 中插入一些东西来生成用户特定的激活链接(使用函数?)。通过传入用户对象的参数,我想知道 FOSUserBundle 是否可以按照我的要求进行操作?

标签: swiftsymfonyemailfosuserbundleactivation

解决方案


推荐阅读