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

php – Swiftmailer发送后删除附件

发布时间:2020-12-13 22:05:18 所属栏目:PHP教程 来源:网络整理
导读:我发送电子邮件与Symfony 2.1和 Swiftmailer后,我试图删除附件文件,但如果我在返回响应对象(重定向)之前删除该文件,电子邮件不会发送. 我想这是因为symfony在回复中发送电子邮件,因此当电子邮件发送时,附件已经被删除. 例如: ?php// DefaultCotroller.php$m
我发送电子邮件与Symfony 2.1和 Swiftmailer后,我试图删除附件文件,但如果我在返回响应对象(重定向)之前删除该文件,电子邮件不会发送.

我想这是因为symfony在回复中发送电子邮件,因此当电子邮件发送时,附件已经被删除.

例如:

<?php

// DefaultCotroller.php

$message = Swift_Message::newInstance($subject)
    ->setFrom('no-reply@dasi.es')
    ->setTo($emails_to)
    ->setBody($body,'text/html')
    ->attach(Swift_Attachment::fromPath('backup.rar'));

$this->get('mailer')->send();

unlink('backup.rar');  // This remove the file but doesn't send the email!

return $this->redirect($this->generateUrl('homepage'));

一个选项是创建一个crontab来清理文件,但我不想使用它.

谢谢!

解决方法

您可以在此处查看处理内存线轴的代码:
https://github.com/symfony/SwiftmailerBundle/blob/master/EventListener/EmailSenderListener.php

这用于批量发送电子邮件.

你可以在send()调用之后和unlink()调用之前添加它,以模仿发送电子邮件的行为

$transport = $this->container->get('mailer')->getTransport();  

        $spool = $transport->getSpool();

        $spool->flushQueue($this->container->get('swiftmailer.transport.real'));

(编辑:李大同)

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

    推荐文章
      热点阅读