加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在附加和发送文件后取消链接? (使用Mail :: queue时

发布时间:2020-12-13 17:30:38 所属栏目:PHP教程 来源:网络整理
导读:我从发送邮件立即切换到将其添加到队列中,这是我的代码,$attachments是一个临时路径数组,我已经注释掉了我尝试过的内容,这会导致文件不存在的错误. Mail::queue($view,$data,function(IlluminateMailMessage $message) use($mail,$attachments){ foreach(
我从发送邮件立即切换到将其添加到队列中,这是我的代码,$attachments是一个临时路径数组,我已经注释掉了我尝试过的内容,这会导致文件不存在的错误.

Mail::queue($view,$data,function(IlluminateMailMessage $message) use($mail,$attachments){
    foreach($mail->getRecipients() as $recipient){
        $message->to($recipient);
    }
    $message->subject($mail->getSubject());
    foreach($attachments as $attachment){
        $message->attach($attachment);
        //this deletes the attachment before being sent
        //unlink($attachment);
    }
});
/* This code only works when using Mail::send() instead of Mail:queue()
foreach($attachments as $attachment){
    unlink($attachment);
}
*/

基本上我想在邮件发送后清理并删除我的临时附件.我猜这不适用于开箱即用的laravel邮件解决方案.如何在队列邮件发送后触发代码?

解决方法

在删除文件之前,您必须等待队列处理完毕.

在不知道队列的实现细节的情况下很难回答您的问题,但如果在脚本结束之前处理了队列,则可以使用register_shutdown_function
http://www.php.net/manual/en/function.register-shutdown-function.php运行清除删除文件的功能

register_shutdown_function(function() use (filename){
    if (file_exists($filename)) {
        unlink($filename);
    }
})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读