Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eric_renan

[Resolvido] Erro newsletter

Recommended Posts

Já virei o código de cabeça para baixo e não consegui identificar o problema. Tenho o código abaixo para o envio de uma newsletter, porém ele envia somente para os 10 primeiros registros. Quando dá o "refresh" na página ele considera que todos os e-mails já foram enviados, mas na verdade não foram. Alguém consegue me ajudar a identificar onde está o erro?

 

 <?php 
//configurações do banco 
$host = "localhost"; 
$banco = "BANCO"; 
$usuario = "USUÁRIO"; 
$senha = "SENHA"; 
$tabela = "TABELA"; 
$campos = "CODIGO,email,status"; //campos da tabela 

//configurações do e-mail 
$varEmpresa	=$_POST['slc_empresa'];
$varEditoria	=$_POST['slc_editoria'];
$varDestinatario	=$_POST['slc_destinatario'];
$varDe	=$_POST['txt_de'];
$varTitulo	=$_POST['txt_titulo'];
$varCabecalho	=$_POST['txt_cabecalho'];
$varConteudo	=$_POST['txt_conteudo'];
$varRodape	=$_POST['txt_rodape'];

$subject = $varTitulo; 
$body = $varCabecalho . "<br>" . $varConteudo . "<br>" . $varRodape;
$nome_remetente = "remetente"; 
$email_remetente = $varDe; 

$quant = 10; //número de mensagens enviadas de cada vez 
$sec = 10; //tempo entre o envio de um pacote e outro (em segundos) 
?> 

<?php 
$conexao2 = mysql_connect($host,$usuario,$senha); 
mysql_select_db($banco); 
?> 

<?php 
$ok = 0; 
$inicio = 0; 
$fim = $inicio + $quant; 
?> 

<?php 

if ($varDestinatario==0){

$sql = "select $campos from $tabela where status='0' and editoria='$varEditoria' limit $inicio,$fim";

}else{

$sql = "select $campos from $tabela where status='0' and editoria='$varEditoria' and midia='$varDestinatario' limit $inicio,$fim";
}
$query = mysql_query($sql,$conexao2); 
$registros = mysql_num_rows($query); 
?> 

<?php 
if($registros==0) { 
  mysql_query("update $tabela set status='0'"); 
  printf("<p align='center'><a class='texto12'>Todas as mensagens foram enviadas!</a></p>"); 
  $ok = 1; 
} 
?> 

<?php 
while($result = mysql_fetch_array($query)) { 
  $id = $result[0]; 
  $to = $result[1]; 
  $status = $result[2]; 
 echo $id . "<br>" . $status . "<br>";
  $headers = "From: $nome_remetente <$email_remetente> \r\nContent-type: text/html; charset=iso-8859-1\r"; 
  mail($to,$subject,$body,$headers);  
  mysql_query("update $tabela set status='1' where CODIGO ='$id'"); 
  printf("<font face='tahoma'>$id ) mensagem para <b>$to</b> <font color='#ff0000'><b>enviada com sucesso!</b></font></font>"); 
} 
?> 

<?php 
mysql_free_result($query); 
mysql_close($conexao2); 
?> 

<?php 
if(!$ok){ 
  echo("<meta http-equiv=\"refresh\" content=\"" . $sec . "\">"); 
} 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido. Segue código:

 

<?php 
//configurações do banco 
$host = "SERVER"; 
$banco = "BANCO"; 
$usuario = "USUARIO"; 
$senha = "SENHA"; 
$tabela = "TABELA"; 
$campos = "CODIGO,email,status"; //campos da tabela 

//configurações do e-mail 
if($_SERVER['REQUEST_METHOD']=='POST'){
$varEmpresa	=$_POST['slc_empresa'];
$varEditoria	=$_POST['slc_editoria'];
$varDestinatario	=$_POST['slc_destinatario'];
$varDe	=$_POST['txt_de'];
$varTitulo	=$_POST['txt_titulo'];
$varCabecalho	=$_POST['txt_cabecalho'];
$varConteudo	=$_POST['txt_conteudo'];
$varRodape	=$_POST['txt_rodape'];

$_SESSION['envia_empresa']=$varEmpresa;
$_SESSION['envia_editoria']=$varEditoria;
$_SESSION['envia_destinatario']=$varDestinatario;
$_SESSION['envia_de']=$varDe;
$_SESSION['envia_titulo']=$varTitulo;
$_SESSION['envia_cabecalho']=$varCabecalho;
$_SESSION['envia_conteudo']=$varConteudo;
$_SESSION['envia_rodape']=$varRodape;

}else{

$varEmpresa=$_SESSION['envia_empresa'];
$varEditoria=$_SESSION['envia_editoria'];
$varDestinatario=$_SESSION['envia_destinatario'];
$varDe=$_SESSION['envia_de'];
$varTitulo=$_SESSION['envia_titulo'];
$varCabecalho=$_SESSION['envia_cabecalho'];
$varConteudo=$_SESSION['envia_conteudo'];
$varRodape=$_SESSION['envia_rodape'];
}



$subject = $varTitulo; 
$body = $varCabecalho . "<br>" . $varConteudo . "<br>" . $varRodape;
$nome_remetente = "REMETENTE"; 
$email_remetente = $varDe; 

$quant = 10; //número de mensagens enviadas de cada vez 
$sec = 10; //tempo entre o envio de um pacote e outro (em segundos) 
?> 

<?php 
$conexao2 = mysql_connect($host,$usuario,$senha); 
mysql_select_db($banco); 
?> 

<?php 
$ok = 0; 
$inicio = 0; 
$fim = $inicio + $quant; 

?> 

<?php 
if ($varDestinatario==0){

$sql = "select $campos from $tabela where status='0' and editoria='$varEditoria' limit $inicio,$fim";

}else{

$sql = "select $campos from $tabela where status='0' and editoria='$varEditoria' and midia='$varDestinatario' limit $inicio,$fim";
}
$query = mysql_query($sql,$conexao2); 
$registros = mysql_num_rows($query);
?> 

<?php 
if($registros==0) { 
  mysql_query("update $tabela set status='0'"); 
  printf("<p align='center'><a class='texto12'>Todas as mensagens foram enviadas!</a></p>"); 
  $ok = 1;

  unset($_SESSION['envia_empresa']);
  unset($_SESSION['envia_editoria']);
  unset($_SESSION['envia_destinatario']);
  unset($_SESSION['envia_de']);
  unset($_SESSION['envia_titulo']);
  unset($_SESSION['envia_cabecalho']);
  unset($_SESSION['envia_conteudo']);
  unset($_SESSION['envia_rodape']);
} 
?> 

<?php
while($result = mysql_fetch_array($query)) { 

  $id = $result[0]; 
  $to = $result[1]; 
  $status = $result[2]; 
// echo $id . "<br>" . $status . "<br>";
  $headers = "From: $nome_remetente <$email_remetente> \r\nContent-type: text/html; charset=iso-8859-1\r"; 
  mail($to,$subject,$body,$headers);  
  mysql_query("update $tabela set status='1' where CODIGO ='$id'"); 
  printf("<a class='texto12'>$id - mensagem para <b>$to</b> enviada!</a><br>"); 
} 
?> 

<?php 
mysql_free_result($query); 
mysql_close($conexao2); 
?> 

<?php 
if(!$ok){ 
  echo("<meta http-equiv=\"refresh\" content=\"" . $sec . "\">"); 
} 
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.