我之前没有遇到过这个问题,但只有Laravel Mailable取得了成功,所以我现在没有理由怀疑它。在我的应用程序中,我有一个记录的附件部分。在该部分中,我向用户提供了选择他们希望邮寄到电子邮件的附件的选项。
我的问题是,截至目前,使用以下当前控制器,有时发送过程可能需要相当长的时间(此时,一个示例仅在3.67分钟后发送!!)。我理解这可能部分是因为它的大小,但我关注这个时间,并希望看看是否有后端备选方案(例如队列)。
此时此处是我的控制器,用于发送给mailable的命令:
public function attachmentsEmail(Request $request){
$shipment = Shipment::findOrFail($request->shipmentID);
$attachment = Shipment_Attachment::findOrFail($request->attachmentID);
$storagePath = Storage::url($attachment->attachmentPath);
$customMessage = $request->customMessage;
$email = $request->email;
Mail::to($email)->send(new shipmentAttachments($shipment, $attachment, $storagePath, $customMessage)); //maybe try to use queue instead of send...
return response()->json([
'shipment' => $shipment,
'customMessage' => $customMessage,
'email' => $email
]);
}
我们目前正在使用Windows Server,因此虽然我想使用队列,但我无法使用主管来维护我的队列。
但是,如果还有其他建议,我愿意接受。我仍然相对较新,并了解可能有更好的方法来处理这些问题。
答案 0 :(得分:1)
我参与了一个在IIS上运行laravel app的项目。我们必须使用队列来降低发送可邮寄的API端点的延迟。你是对的,没有适用于控制台PHP的Windows的官方稳定主管,但是我们找到了AlwaysUp(https://www.coretechnologies.com/products/AlwaysUp/)并最终运行了laravel队列。 您还应该检查您正在使用的smtp服务器,您正在谈论的时间似乎很多,但取决于确切的attachmens大小。您可以尝试使用Mailgun等外部邮件服务。