qué que ejemplo comando codigo email yii2 yii2-advanced-app yii-extensions

email - que - url mailto



Enviar enlaces de acción con botones en Correo usando YII2 (2)

Quiero poner el botón de acción en este formato de correo Usar Yii2 ..

Entonces esa persona relevante puede tomar ciertas acciones (Aceptar o Rechazar) a través del correo mismo.

¿Hay alguna forma de enviar una clave cifrada o cualquier otra cosa para que un usuario particular pueda realizar su operación usando el correo mismo?

A partir de ahora, puedo enviar solo correo con cuerpo de texto normal, quiero enviar un enlace de acción particular con el botón junto con este correo.

Cómo puedo conseguir esto ?

Cualquier ayuda será altamente solicitada.

Gracias por adelantado.

Mi código de controlador.

/* 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>''; }


Al igual que su pregunta, he enviado un enlace en mi correo electrónico para olvidar la contraseña. Este enlace funciona para diferentes funcionalidades para diferentes usuarios. Estoy trabajando con codeigniter pero también funciona bien para todos los frameworks php. p.ej

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

Ahora $ url es un enlace seguro encriptado. Y esta url envía una parte del cuerpo del mensaje, por ejemplo

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

Enviarlo por correo electrónico Después del clic del usuario en este enlace en su correo electrónico ... puede lograr este proceso inverso de todo, por ejemplo ...

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

Ahora $ id es ID de empleado ... Prueba este código php. Funcionará bien para todos.


encriptar url como @kumar Rakesh explicó

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

Luego puede hacer dos enlaces para Aceptar y Rechazar.

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

Y en su función de Sendemail haga esto:

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