2016-09-21 59 views
1

我正在使用PHPMailer将附件发送到电子邮件。PHPMailer ZIP所有附件

我有if语句,如:

if(isset($_POST['checkbox1'])) { 
    $mail->addAttachment('pdf/1.pdf'); 
    $name = "PDF 1"; 
} 
if(isset($_POST['checkbox2'])) { 
    $mail->addAttachment('pdf/2.pdf'); 
    $name = "PDF 2"> 
} 

在结束每一个复选框,选中我希望压缩所有附件,并把它们放在一个压缩,而不是仅仅由一个发送一个。

回答

2

这不是PHPMailer的工作。 Zip the files first,然后附加它们:

$zip = new ZipArchive(); 
$filename = "./files.zip"; 
$hasfiles = false; 

if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) { 
    exit("cannot open <$filename>\n"); 
} 

if(isset($_POST['checkbox1'])) { 
    $zip->addFile('pdf/1.pdf'); 
    $hasfiles = true; 
} 
if(isset($_POST['checkbox2'])) { 
    $zip->addFile('pdf/2.pdf'); 
    $hasfiles = true; 
} 

$zip->close(); 

if ($hasfiles) { 
    $mail->addAttachment($filename); 
} 
+0

现在可以使用,但即使没有选择它也会发送每个文件。例如,如果我选中复选框一,它发送复选框一和二的文件,也许我必须生成不同的zip文件?如果是的话,我会如何做到这一点? – theking3016

+0

我解决了这个问题,只需在邮件发送后取消链接zip文件,谢谢。 – theking3016