Artigos comentados e explicados sobre MySQL
Moderador: web
por web Offline » Dom Mai 27, 2007 7:28 am
|
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.");
$db = @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: eu < eu@eu.com.br > 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);
?>

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12425
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por web Offline » Ter Mai 31, 2011 12:53 pm
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']; }

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12425
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
Voltar para Artigos sobre MySQL
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante
|
|
|