簡體   English   中英

PHPmailer多個附件僅首先發送

[英]PHPmailer multiple attachments only sends first

當嘗試使用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語句就會停止。

有人能幫我嗎?

實際上...如果在第一個條件匹配時語句停止...因此建立一個新邏輯

例如

<?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
   }

請嘗試使用addAttachment代替AddEmbeddedImage。

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

這與PHPMailer無關。 這只是對PHP中的表達式求值的基本了解。

如果您在if條件的第一部分上獲得了正確的結果,則無需評估其余條件就可以知道總體上將為true,因此永遠不會調用其他函數。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM