2015-07-21 26 views
0

當試圖發送與PHPMailer的多個文件我用這個語句來檢查,如果至少一個文件已被上傳:PHPMailer的多個附件僅發送第一

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile) or move_uploaded_file($_FILES['userfile2']['tmp_name'], $uploadfile2) or move_uploaded_file($_FILES['userfile3']['tmp_name'], $uploadfile3)) { 

,並使用此代碼添加文件

 $mail->AddEmbeddedImage($uploadfile, 'file', 'Uploaded file'); 
     $mail->AddEmbeddedImage($uploadfile2, 'file2', 'Uploaded file 2'); 
     $mail->AddEmbeddedImage($uploadfile3, 'file3', 'Uploaded file 3'); 

但是它只發送第一個選定的文件,並且不會發送其他可能來的文件。它看起來像if語句只要發現一個條件爲真就停止。

有人可以幫助我嗎?

回答

0

其實... if語句停止時,第一個條件匹配......因此,建立一個新的邏輯

例如

<?php 
    $success = array(); 
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) $success[] = $uploadfile; 
    if(move_uploaded_file($_FILES['userfile2']['tmp_name'], $uploadfile2)) $success[] = uploadfile2; 
    if(move_uploaded_file($_FILES['userfile3']['tmp_name'], $uploadfile3)) $success[] = uploadfile3; 

    if($success) { 
     // Your code here 
    } 
0

請使用addAttachment來代替AddEmbeddedImage。

$mail->addAttachment($uploadfile, 'Uploaded file'); 
    $mail->addAttachment($uploadfile2, 'Uploaded file 2'); 
    $mail->addAttachment($uploadfile3, 'Uploaded file 3'); 
0

這與PHPMailer無關。這只是對PHP中表達式評估的基本理解。

如果您在if條件的第一部分有真實結果,則不需要評估其餘條件就可以知道它將總體評估爲真,因此其他函數將永遠不會被調用。

分別檢查每個文件,它將工作。