2015-07-21 3 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

на самом деле ... если оператор останавливается, когда первое условие матч ... так построить новую логику

например

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

Вместо AddEmbeddedImage попробуйте добавить addAttachment.

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

Это не связано с PHPMailer .; это просто базовое понимание оценки выражения в PHP.

Если у вас есть верный результат в первой части условия if, нет необходимости оценивать остальную часть условия, чтобы знать, что она будет оцениваться в true, поэтому другие функции никогда не будут вызываться.

Проверьте каждый файл отдельно, и он будет работать.

Смежные вопросы