2016-08-11 31 views
3

我希望把动作按钮在这个邮件格式中使用Yii2 ..使用YII2

让卫浴套间人可以采取某些行动,通过邮件发送自身的按钮操作链接的邮件(接受或拒绝)。

有没有办法发送加密密钥或其他任何东西,以便特定的usr可以使用邮件自己执行操作。

截至目前,我只能发送正常文本正文的邮件,我想发送特定的动作链接与此邮件的按钮。

我该如何做到这一点?

任何帮助将高度appriciated。

在此先感谢。

我的控制器代码。

/* 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 = '[email protected]'; 
     $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>'; 
    } 

回答

2

像你的问题,我已经发出了链接在我的电子邮件密码忘记了。这对于不同用户的不同功能的链接工作。我使用codeigniter工作,但它也适用于所有php框架。 例如

$id = $emp_id; 
$static_key = "afvsdsdjkldfoiuy4uiskahkhsajbjksasdasdgf43gdsddsf"; 
$ids = $id . "_" . $static_key; 
$b_id = base64_encode($ids); 
$url = base_url('Access/newpassword/') . "/?id=" . $b_id; 

现在$ url是安全的加密链接。这个URL发送消息的正文部分,例如

echo "<p><a target='_blank' href='" . $url . "'>Change Password</a></p>"; 

通过电子邮件发送。在他/她的电子邮件链接的用户点击后..你可以achive的所有事情如此相反的过程..

$ids = $this->input->get('id'); 
$urlData = array('ids'=>$ids); 
$iddecoded = base64_decode($ids); 
$idsalt = explode('_', $iddecoded); 
$id = $idsalt[0]; 
$salt = $idsalt[1]; 

现在$ id为雇工标识..试试这个PHP代码。它对每个人都很好。

5

加密网址等作为@kumar Rakesh解释

$id = $emp_id; 
$static_key = "afvsdsdjkldfoiuy4uiskahkhsajbjksasdasdgf43gdsddsf"; 
$ids = $id . "_" . $static_key; 
$b_id = base64_encode($ids); 

然后你就可以对接受和拒绝两个环节。

$url1 = base_url('Class_name/action_name/') . "/?id=" . $b_id."&action=accept"; 
$url2 = base_url('Class_name/action_name/') . "/?id=" . $b_id."&action=reject"; 

而在你Sendemail功能做到这一点:

$content .= "<p><a target='_blank' href='" . $url1 . "'>Accept</a></p>"; 
$content .= "<p><a target='_blank' href='" . $url2 . "'>Reject</a></p>";