public function notifyCommentRecipient($comment, $parent, $recipient)
    {
        $subject = $parent->notificationSubject($comment, $recipient);
        $sender = $parent->notificationSender($comment, $recipient);
        $template = $parent->notificationTemplate($comment, $recipient);

        // Validate email
        // Important in case of the owner being a default-admin or a username with no contact email
        $to = ($recipient instanceof Member) ? $recipient->Email : $recipient;

        if (!Email::is_valid_address($to)) {
            return;
        }

        // Prepare the email
        $email = Email::create();
        $email->setSubject($subject);
        $email->setFrom($sender);
        $email->setTo($to);
        $email->setHTMLTemplate($template);

        if ($recipient instanceof Member) {
            $email->setData([
                'Parent' => $parent,
                'Comment' => $comment,
                'Recipient' => $recipient,
                'ApproveLink' => $comment->ApproveLink($recipient),
                'HamLink' => $comment->HamLink($recipient),
                'SpamLink' => $comment->SpamLink($recipient),
                'DeleteLink' => $comment->DeleteLink($recipient),
            ]);
        } else {
            $email->setData([
                'Parent' => $parent,
                'Comment' => $comment,
                'ApproveLink' => false,
                'SpamLink' => false,
                'DeleteLink' => false,
                'HamLink' => false,
                'Recipient' => $recipient
            ]);
        }

        $this->owner->invokeWithExtensions('updateCommentNotification', $email, $comment, $recipient);

        return $email->send();
    }