Como enviar e-mails em massa, dentro dos limites de utilização do serviço de e-mail em PHP?

De Wiki
Ir para: navegação, pesquisa

NOTAS:

  • O envio de e-mail em massa caracterizado como Spam é expressamente proibido em nossa rede. Para saber mais sobre nossa Política Antispam, acesse: Posso enviar Spam para divulgar o meu domínio?
  • Para preservar a capacidade de entrega de mensagens, não permitimos o envio de mensagens em massa com características consideradas maliciosas ou abusivas. Para saber mais sobre as práticas e conteúdos não permitidos no envio de e-mail em massa, acesse: Política para Envio de Emails em Massa

A seguir, apresentamos um exemplo de script PHP que faz o envio temporizado de 10 e-mails a cada 12 segundos, visando evitar o acúmulo de mensagens no Serviço de E-mail.


1º Passo: Crie o script PHP para enviar o envio dos e-mails, o arquivo deve se chamar mail_lotes.php

<?php

## CONFIGURAÇÃO DOS E-MAILS (ASSUNTO, CORPO DE MENSAGEM, REMETENTE, E-MAIL DO REMETENTE)

$assunto = "Envio de e-mail em Massa, temporizado";

$mensagem = "Prezados ";

$mensagem .= "Este e-mail é um teste, simulando o envio de blocos de mensagens em períodos de tempo ";

$remetente = "Seu Nome de Exibição";

$email_remet = "Conta@SeuDomínio";

$campos= id, usuario, status;


## Número de Mensagens enviadas por Blocos,

$msg_num = 10;


## Tempo, em segundos, entre os Blocos de E-mail

$sec = 12;


## FORNECENDO DADOS PARA CONEXÃO COM BANCO DE DADOS

$conexao = mysql_connect("mysql.SeuDomínio", "usuario","senha");

mysql_select_db("usuario");


$ok = 0;

$inicio = 0;

$fim = $inicio + $msg_num;


$sql = "select $campos from usuario where status = 0 limit $inicio,$fim";

$query = mysql_query($sql,$conexao);

$registros = mysql_num_rows($query);


if($registros==0) {


mysql_query("update usuario set status = 0");
printf("<font face='tahoma'>Envio de mensagens: O.K.</font>");
$ok = 1;
}


while($result = mysql_fetch_array($query)){

$id = $result[0];

$para = $result[1];

$status = $result[2];


$headers = "From: $nome_remetente <$email_remet>";

mail($para,$assunto,$mensagem,$headers);

mysql_query("update usuario set status = 1 where id = $id");

printf("<font face='tahoma'>[$id] mensagem para <b>$para</b> <font color='#ff0000'>enviada com sucesso!</font></font><br>");

}

mysql_free_result($query);

mysql_close($conexao);

if(!$ok){

echo("<meta http-equiv="refresh" content="" . $sec . "">");

}


php?>


Notas::

  • Substitua Conta@SeuDomínio por um endereço de e-mail válido de seu domínio, mysql.SeuDomínio pelo endereço do seu banco de dados, usuario pelo login de acesso ao MySQL e pela senha de acesso ao MySQL.
  • Crie as tabelas 'id', 'usuario' e 'status' em sua base MySQL, ou informe o nome das tabelas respectivas na variável '$campos'


2º Passo: Publicação do arquivo:

Através da ferramenta WebFTP disponível no Painel de Controle do seu domínio, ou utilizando um Cliente de FTP, publique o arquivo mail_lotes.php na raiz do seu domínio ou em um diretório de sua preferência.