0

phpmailer を使用して、電子メール メッセージと複数の添付ファイルを送信する単純なページがあります。送信する電子メールメッセージに複数の添付ファイルを添付し、これらのファイルを同時にサーバーにアップロードする必要があります。そのために、次のループを使用しています。

 $MyUploads = array();

 foreach(array_keys($_FILES['attach']['name']) as $key)
 { $Location="uploads/";

 $name=$_FILES['attach']['name'][$key];
 $filePath = $Location . $name;
 $source = $_FILES['attach']['tmp_name'][$key]; // location of PHP's temporary file for 
 $tmp=$_FILES['attach']['tmp_name'][$key];

 if($mail->AddAttachment($source, $name))
  {if(move_uploaded_file($tmp, $filePath)){
 $MyUploads[] = $filePath;}
 else
 {$MyUploads[]='';
 echo "not uploaded";}
 }
 }

問題は、関数 move_uploaded_file() を使用すると、ファイルがサーバー フォルダーにアップロードされますが、添付ファイルと共に送信されないことです。この関数をコメントアウトすると、添付ファイルが送信されます。

なぜこの 2 つが一緒に機能しないのかわかりません。体の助けをください

4

1 に答える 1

0

これは、添付ファイルを送信し、さらに使用するためにそれらをターゲットパスに移動するループです。私は他の誰かがこれによって助けられることを願っています:

$MyUploads = array();
$numFiles = count(array_filter($_FILES['attach']['name']));

for ($i = 0; $i < $numFiles; ++$i) {
    $target_path = 'uploads/' . basename($_FILES['attach']['name'][$i]);
    if(move_uploaded_file($_FILES['attach']['tmp_name'][$i], $target_path)) {
        echo "the file ".basename($_FILES['attach']['name'][$i])." has been uploaded<br />";
        $MyUploads[] = $target_path;
        echo $MyUploads;
        $mail->AddAttachment($target_path);
    }
}
于 2012-04-17T11:36:27.550 に答える