Envio de newsletter com tempo ( quase cron )

Artigos comentados e explicados sobre MySQL

Moderador: web

responder a dúvida

Envio de newsletter com tempo ( quase cron )

Mensagem 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);
?>



detalhes...

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

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12425
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

Envio de newsletter com tempo ( quase cron )

Mensagem 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'];
}

detalhes...

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

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12425
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil


responder a dúvida

Voltar para Artigos sobre MySQL

Quem está online

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