Q:

Send action links with buttons in Mail using YII2

I want to put action button in this mail format Using Yii2 .. 
So that releveant person can take a certain actions (Accept or Reject) through mail itself.  
Is there any way to send encrypted key or anything else so that particular usr can perform their operation using mail it self.?
As of now i am able to send only mail with normal text body , i want to send particular action link with button along with this mail.
How can i achieve this ?
Any help will be highly appriciated.
Thanks in Advance. 
My Controller Code.
 /* Sending  Mail Function */

    public function Sendemail($request, $receiver, $subject, $email_body) {
        $empmodel = Employee::find()->where('EmployeeNo = "' . $request->createdby . '" ')->all();

        $data = ServreqItems::find()->where('srno=' . $request->srno)->all();
        $content = "<html><body>";
        $content .= "<table align='center' width='70%' bgcolor='#e0e0e0' cellpadding='0' cellspacing='0' border='0'>";
        $content .= "<tr><td>";
        $content .= "<table align='center' width='100%'  cellpadding='0' cellspacing='0' style='border:dashed #FFA500 2px; max-width:650px; background-color:#fff; font-family:Verdana, Geneva, sans-serif;'>";
        $content .= "<thead>
                        <tr height='80'>
                              <th colspan='4' style='background-color:#f5f5f5; border-bottom:solid 1px #bdbdbd; font-family:Verdana, Geneva, sans-serif; color:#333; font-size:24px;' >" . $request->FormsName . "&nbsp;Details</th>
                        </tr>
                    </thead>";

        $content .= "<tbody>
                    <tr align='center' height='10' style='background-color:#FFA500; font-family:Verdana, Geneva, sans-serif;'></tr>";

        $empmdl = Employee::find()->where('EmployeeNo = "' . Yii::$app->session['username'] . '" ')->all();

        for ($e = 0; $e < count($empmdl); $e++) {
            $content.= "<tr>
                        <td colspan='4' style='padding:15px;'>
                        <p style='font-size:20px;'>Hi' " . $empmdl[$e]->EmployeeName . " !!! " . $email_body . "</p>
                    <hr />";
        }

        for ($i = 0; $i < count($data); $i++) {
            $content.= '<tr><td style="padding-left:15px;padding-bottom:15px;">' . $data[$i]->fid->filable . '</td> <td style="padding-right:255px;"> : ' . $data[$i]->fivalue . '</td></tr>';
        }

        $content .= "<tr height='25'>
                        <td colspan='4' align='center' style='background-color:#f5f5f5; border-top:dashed #FFA500 2px; font-size:12px; '>
                        </td>
                    </tr>
                    </tbody>";

        $content .= "</table>";
        $content .= "</td></tr>";
        $content .= "</table>";
        $content .= "</body></html>";

        $sender = 'test@abc.in';
        $message = Yii::$app
            ->mail
            ->compose()
            ->setFrom($sender)
            ->setTo($receiver)
            ->setSubject($subject)
            ->setHtmlBody($content, ' text/html')
        ;

        Yii::$app->mail->getTransport()->start();
        Yii::$app->mail->send($message);
        Yii::$app->mail->getTransport()->stop();

        echo '<script>alert("Email Sent Successfuly")</script>';
    }

A:

encrypt url like as @kumar Rakesh explained
$id = $emp_id;
 $static_key = "afvsdsdjkldfoiuy4uiskahkhsajbjksasdasdgf43gdsddsf";
 $ids = $id . "_" . $static_key;
 $b_id = base64_encode($ids);

Then you can make two links for Accept and Decline.
$url1 = base_url('Class_name/action_name/') . "/?id=" . $b_id."&action=accept";
$url2 = base_url('Class_name/action_name/') . "/?id=" . $b_id."&action=reject";

And in your Sendemail function do this:
$content .= "<p><a target='_blank' href='" . $url1 . "'>Accept</a></p>";
$content .= "<p><a target='_blank' href='" . $url2 . "'>Reject</a></p>";

A:

As like your question , I have sent a link in my email for forget password.. This link Work for different functionality for different users. I am working it with codeigniter but it also work fine for all php frameworks.
e.g.
 $id = $emp_id;
 $static_key = "afvsdsdjkldfoiuy4uiskahkhsajbjksasdasdgf43gdsddsf";
 $ids = $id . "_" . $static_key;
 $b_id = base64_encode($ids);
 $url = base_url('Access/newpassword/') . "/?id=" . $b_id;

Now $url is secure encrypted link. And this url send in body part of message e.g.
  echo "<p><a target='_blank' href='" . $url . "'>Change Password</a></p>";

Send it in email . After click of user at this link in his/her email.. you can achive this reverse process of all thing eg..
$ids = $this->input->get('id');
$urlData = array('ids'=>$ids);
$iddecoded = base64_decode($ids);
$idsalt = explode('_', $iddecoded);
$id = $idsalt[0];
$salt = $idsalt[1];

Now $id is employe Id.. Try this php code. It will be working Fine for everyone.

