【发布时间】:2017-07-18 10:25:16
【问题描述】:
好的,我目前正在使用 Mandrill 发送电子邮件。 我认为这是不是的问题。例如,这条测试路线可以很好地触发。
public function email($emailAddress){
$data = array(
'email' => $emailAddress,
'name' => 'Test Name'
);
$result = Mail::queue('emails.test', $data, function ($message) use ($data){
$message->from(Config::get('settings.contact_form_from.address'), Config::get('settings.contact_form_from.name'));
$message->sender(Config::get('settings.contact_form_from.address'), Config::get('settings.contact_form_from.name'));
$message->to($data['email'], $data['name']);
$message->subject('Test email to: ' . $data['email']);
});
return $this->response($result);
}
这是使用queue 函数。如果调整为Mail::send() 也可以。因此,我所有的队列处理程序和邮件环境变量都工作正常。 (我可以在 Mandrill 中看到这两封电子邮件)。
所以我的问题是我使用 Laravel 5.2 Auth Scaffolding 安装的 密码重置 功能。
所以,路线等一切正常 - 只是没有发送电子邮件。
它正确识别用户是否存在(显示正确的错误消息)。
那我看了一下源代码,有点迷茫,需要帮助!
如果我看这里......Illuminate\Foundation\Auth\ResetPasswords.php我可以看到这个方法。
公共函数 sendResetLinkEmail(Request $request) { $this->validateSendResetLinkEmail($request);
$broker = $this->getBroker();
$response = Password::broker($broker)->sendResetLink(
$this->getSendResetLinkEmailCredentials($request),
$this->resetEmailBuilder()
);
switch ($response) {
case Password::RESET_LINK_SENT:
return $this->getSendResetLinkEmailSuccessResponse($response);
case Password::INVALID_USER:
default:
return $this->getSendResetLinkEmailFailureResponse($response);
}
}
如果我在$response 中断,我会得到正确发送的响应。所以我认为这与Password::broker 部分有关,这里的代码完全让我感到困惑。
非常感谢任何帮助!
【问题讨论】: