2013-08-09 2 views
0

Я хочу отправить несколько писем с различным контентом. Для этого пользователю необходимо выбрать флажок и нажать кнопку, чтобы отправить все проверенные электронные письма.отправка нескольких писем с циклом for в phpmailer

Для этого у меня есть таблица для отображения содержимого из базы данных.

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] = "[email protected]"; 
        $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 = "[email protected]"; 
            $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(); 
               } 
              } 
            } 

Это diplays-е сообщение об ошибке: «Invalid Адрес: Вы должны обеспечить по крайней мере один адрес электронной почты получателя.» Что я делаю неправильно? Благодаря

+0

Отсортируйте выделение синтаксиса в первом примере. Поэтому люди могут понять это –

ответ

0

Отрывок из documentation:

$mail->AddAddress('[email protected]', 'Josh Adams'); // Add a recipient 
$mail->AddAddress('[email protected]');    // Name is optional 

Вы получили это для для электронной почты получателя:

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

Похоже, вы, возможно, потребуется переключить $ NewString и $ nomeUser [$ i]. (Вы проверили, действительно ли переменные переданы скрипту, правильно?)

+0

Но я не знаю, является ли мой код лучшим способом отправки нескольких сообщений электронной почты. Я получаю переменные из таблицы. – user2612507

+0

Отправка основной электронной почты * это сложный бизнес. Если вы отправляете слишком много/слишком часто, вы рискуете, что ваш сервер станет черным. Вы можете обратиться к своему провайдеру, прежде чем отправиться жить, например. запрашивая «квоту электронной почты». Ошибка «Недействительный адрес ... хотя бы один адрес электронной почты получателя» выглядит так, как будто он поступает из phpmailer(), а не из соединения с базой данных или таблицы. (В вашей таблице не было бы никаких недопустимых адресов электронной почты?) Вы пытались просто переключать переменные? Или просто используйте пример из приведенной выше документации? Это заставило ошибку уйти? –

+0

Я попытался отправить одно электронное письмо e, которое оно отправляет правильно – user2612507

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