Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Envio de newsletter com tempo ( quase cron )

27-05-2007 06:28

Esse é um script que serve para envio de newsletter, que tem como base o mysql, onde estão armazenados os e-mails que receberão a newsletter.

Esse script, envia determinado número de e-mails por um tempo definido, ou seja, você pode configurar para enviar 10 e-mails, depois de 1 minuto enviar mais 10, etc...

Você pode ativar o link do envio uma vez ( link direto para o documento ), e quando ele acabar de enviar todos e-mails, vai parar o envio. Isso graças a linha do meta refresh que há sempre que tiver uma página a frente da atual.

Veja as configurações necessárias no código:

<table border=0> <tr> <td>E-mails</td> </tr> <?php $dbhost="localhost"; /* servidor */ $dbuser="login"; /* usuário do banco de dados */ $dbpasswd="senha"; /* senha do banco de dados */ $dbname="bancodedados"; /* nome do banco de dados */ /* abaixo abrimos a conexão com os dados acima */ $conexao = mysql_connect($dbhost, $dbuser, $dbpasswd) or die ("não foi possível a conexão, verifique os dados."); mysql_select_db($dbname) or die ("não foi possível o acesso ao banco de dados $dbname."); /* nome da tabela onde está os nosso e-mails */ $tabela="nossatabela"; /* pegamos todos os dados da tabela ordenando em ordem crescente por email */ $sql=mysql_query("SELECT * FROM $tabela ORDER BY email ASC"); $total=mysql_num_rows($sql); /* declaração da página inicial */ if($pagina=="") { $pagina="1"; } /* quantos e-mails enviados por página */ $maximo="10"; /* tempo em segundos para cada envio */ $tempo_segundo="60"; /* calcula o registro inicial */ $inicio=$pagina-1; $inicio=$maximo*$inicio; /* base do script */ $query=mysql_query("SELECT * FROM $tabela ORDER BY email ASC LIMIT $inicio,$maximo"); /* início da mostragem de dados */ while($dados=mysql_fetch_array($query)) { $email = $dados['email']; ?> <?php $assunto_email = "assunto"; // assunto do e-mail enviado $mensagem_email = "mensagem"; // mensagem do e-mail $headers = 'From: eumesmo <eu@eu.com>' . "\r\n"; $headers .= 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; /* Existem alguns servidores de e-mail, que podem não aceitar os headers acima, para isso, você pode usar uma alternativa. //$explode = explode("@", $email); //if($explode[1]=="hotmail.com") { //mail("$email","$assunto_email","$mensagem_email","From: [b]eu[/b] < [b]eu@eu.com.br[/b] > Content-type: text/txt"); //} a linha acima, faz um envio alternativo, quando a extensão for hotmail.com, basta tirar os // do começo das linhas e colocar esses códigos abaixo. */ echo "<tr>"; echo "<td>$email - "; if(@mail("$email","$assunto_email","$mensagem_email", $headers)) { echo "<font color='green'>enviado com sucesso</font></td>"; } else { echo "<font color='red'>falha no envio</font></td>"; } echo "</tr>"; ?> <?php } ?> </table> <?php /* calcula a página anterior */ $menos=$pagina-1; /* calcula a página posterior */ $mais=$pagina+1; /* calculo da mostragem das páginas */ $p_ini=$mais-1; $p_ini=$maximo*$p_ini; /* início da mostragem das páginas */ $p_query=mysql_query("SELECT * FROM $tabela ORDER BY email ASC LIMIT $p_ini,$maximo"); $p_total=mysql_num_rows($p_query); /* mostragem do página anterior e posterior */ if($menos>0) { echo "<a href=\"?pagina=$menos\">anterior(es)</a> "; } if($p_total>0) { echo "<a href=\"?pagina=$mais\">proxima(s)</a>"; echo "<META HTTP-EQUIV='Refresh' CONTENT='$tempo_segundo; URL=?pagina=$mais'>"; } echo "<br><center>Página atual: $pagina.</center><br>"; if($menos!="0" and $p_total=="0") { echo "<center>FIM</center>"; } ?> <?php /* resumo do armazenado no bd */ print <<< HERE <center> Existe $total emails nesse bd. <br> Estamos mostrando $maximo por página. </center> HERE; ?> <?php // fim da conexão mysql_close($conexao); ?>

0
A melhor hospedagem para o seu site HostGator!
 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17737
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Envio de newsletter com tempo ( quase cron )

31-05-2011 11:53

Correção para o script

Troque

/* declaração da página inicial */ if($pagina=="") { $pagina="1"; }  

Por

/* declaração da página inicial */ $pagina = ""; if(isset($pagina)=="") { $pagina="0"; } else { $pagina = $_GET['pagina']; } 

0
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado