【发布时间】:2021-05-04 14:13:01
【问题描述】:
我有一个电子邮件退订链接,但是当我点击该链接时,我收到错误 404。
这是我的代码。
首先,这是带有签名路由的取消订阅链接的生成(链接没问题)
private function generateUnsubscribeLink($meoId, $email)
{
return URL::signedRoute(
'meo.confirm-unsubscribe', [
'meo' => $meoId,
'email' => $email
]
);
}
接下来,这是我的 web.php 路由
Route::get('/unsubscribe/{meo}/{email}', 'MeoMailController@confirmUnsubscribe')->name('meo.confirm-unsubscribe');
Route::post('/unsubscribe/confirmed/{meo}/{email}', 'MeoMailController@unsubscribe')->name('meo.unsubscribe');
最后,这是我的控制器
public function confirmUnsubscribe(Request $request, Meo $meo, MailRecipient $email){
if (!$request->hasValidSignature()) {
abort(401);
}
return view('mail.confirm_unsubscribe', compact(['request', 'meo', 'email']));
}
public function unsubscribe(Meo $meo, MailRecipient $email)
{
$email->state = MailRecipientState::UNSUBSCRIBED;
$email->save();
return view('mail.unsubscribed');
}
最后的结果是当我点击退订链接时出现错误404
链接是 unsubscribe/meoId/email@example.com?SIGNEDROUTE
这里有什么问题?
过去,我使用相同的方法但没有电子邮件(仅使用 meoId),并且工作正常
【问题讨论】:
-
这意味着你在
MailRecipient的邮箱没有找到 -
@MuhammadDyasYaskur 我可以在confirmUnsubscribe 中只使用$email 吗?
-
我不知道
MailRecipient是什么?模型还是库函数? -
@MuhammadDyasYaskur 一个模特
-
是的,请查看我的答案以获取完整代码
标签: laravel email hyperlink unsubscribe