0

内容の異なる複数のメールを送信したい。そのために、ユーザーはチェックボックスを選択し、ボタンをクリックして、チェックしたすべてのメールを送信する必要があります。

そのために、データベースのコンテンツを表示するためだけのテーブルがあります。

 select nomeUser,email,nomeVoucher,categoria,preco,confirmacao,fileName,filePDF
       from historico
       Where confirmacao = 'a confirmar'
       LIMIT $start, $per_page"; 

  $stmt = $mybd->prepare($query);  
  $stmt->execute();
  $stmt->bind_result($nomeUser,$email,$nomeVoucher,$categoria,$preco,$confirmacao,$file2,$filePDF);
             while($stmt->fetch()){ ?>
                  <tbody>
                  <tr><td><?php echo $nomeUser ?></td>
                  <td><?php echo $email ?></td>
                  <td><?php echo $nomeVoucher ?></td>
                  <td><?php echo $categoria ?></td>
                  <td><?php echo $preco ?></td>
                  <td><?php echo $confirmacao ?></td>
           <?php       $current = file_get_contents($file2,$filePDF); ?>
                  <td style='display:none;'><?php echo $current ?></td>
                  <td style='display:none;'><?php echo $file2 ?></td>
                  <td><INPUT TYPE='checkbox' NAME='mail[]' VALUE='1'></td>
                  </tr>
                  </tbody>
               <?php    }$stmt->close();

送信するコードは次のとおりです。

if(isset($_POST['enviar'])){

         $mails = $_POST['mail'];
            if(count($mails) > 0){
                for($i=0;$i<count($mails);$i++){
                    $fromname[$i] = "Compra do Voucher";
                    $from[$i] = "jonathan@tribanet.com";
                    $subject[$i] = "Compra do Voucher";
                    $message = "O seu pagamento foi verificado com sucesso!" . "\r\n" . 
                               "Por favor, verifica se o voucher pedido é o sucedido: " . "\r\n" .
                                    "Categoria: $categoria[$i] \r\n" .
                                    "Nome do Voucher: $nomeVoucher[$i] \r\n" .
                                    "Preço: $preco[$i] € \r\n" .
                                "O seu voucher está disponível aqui $nomeVoucher[$i] \r\r\n" .
                                "Equipa do Voucher \r\n";   
                                    $new_array=array($email[$i]);
                                    $newstring=implode(",",$new_array);
                                    $mail = new PHPMailer();
                                    $mail->isSMTP();
                                    $mail->SMTPAuth = true;
                                    $mail->Host = "smtp.sapo.pt";
                                    $mail->Username = "jonitopsg@sapo.pt";
                                    $mail->Password = "200886";
                                    $mail->Port = 25;

                                    $mail->Sender = "$from[$i]";
                                    $mail->FromName = "$fromname[$i]";
                                    $mail->Subject = "$subject[$i]";
                                    $mail->Body = "$message";
                                    $mail->CharSet="utf-8";
                                    $mail->AddStringAttachment($current[$i],$file2[$i]);
                                    $mail->AddAddress($newstring,$nomeUser[$i]);
                                    if ($mail->send()){
                                        return true;
                                    }else 
                                        return $mail->ErrorInfo;
                                    $mail->ClearAddresses();
                                    $mail->ClearAttachments();
                                                } 
                                            }
                                    }

「無効なアドレス: 受信者の電子メール アドレスを少なくとも 1 つ指定する必要があります。」というエラーが表示されます。私が間違っていることは何ですか?ありがとう

4

1 に答える 1

0

ドキュメントからの抜粋:

$mail->AddAddress('josh@example.net', 'Josh Adams');  // Add a recipient
$mail->AddAddress('ellen@example.com');               // Name is optional

あなたは電子メール受信者のためにこれを手に入れました:

$mail->AddAddress($newstring,$nomeUser[$i]);

$newstring$nomeUser[$i]を切り替える必要があるようです。(変数が実際にスクリプトに渡されているかどうかを確認しましたよね?)

于 2013-08-09T11:31:36.077 に答える