2016-09-21 75 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