我有一个带文件上传的表单,我想将内容发送给电子邮件收件人而不保存信息。目前我正在做以下事情:
if ($applyForm->isValid()) {
$data = $applyForm->getData();
$file = $applyForm['file']->getData();
$file->move('file', $file->getClientOriginalName());
$message = \Swift_Message::newInstance()
->setSubject('Hello')
->setFrom('someone@somehwhere.com')
->setTo('someoneelse@somewhere.com')
->attach(\Swift_Attachment::fromPath('file/'.$file->getClientOriginalName()))
->setBody(
$this->renderView(
'WebBundle:Email:apply.txt.twig', array(
'firstName' => $data['firstName'],
'lastName' => $data['lastName'],
'email' => $data['email'],
'phoneNumber' => $data['phoneNumber'],
'comments' => $data['comments']
)
)
;
$this->get('mailer')->send($message);
unlink('file/'.$file->getClientOriginalName());
return $this->redirect($this->generateUrl('Job_Detail', array(
'slug' => $job->getSlug(),
'id' => $job->getId(),
'status' => 'success',
)));
}
此代码仅在注销掉链接行时才有效。有没有办法在不保存文件的情况下实现这一目标?
答案 0 :(得分:0)
SwiftMailer不会立即发送电子邮件以获得最佳性能,将电子邮件保存在内存或文件中,因此如果电子邮件仍然存在于内存或文件中,您不应该删除任何附件,您可以通过设置轻松解决该问题使用简单的PHP脚本进行cron活动:
$files = glob('path/to/files/*'); // get all file names foreach($files as $file) { if(is_file($file)) unlink($file); // delete file }