Envio de boletins a e-mails de um banco de dados MySQL

Código em PHP para o envio de boletins a e-mails armazenados em um banco de dados.

Por Raúl Avilés


Publicado em: 26/3/08
Valorize este artigo:
Agora está muito na moda o envio de boletins para informar das novidades nas webs. O único problema é que para fazê-lo, a maioria de webmasters tem que depender de alguma empresa (ou servidor) que lhes gerencie o banco de dados e lhes envie e-mails quando o requeiram.

Neste artigo explicarei passo a passo como criar a tabela (no banco de dados MySQL) necessária para o armazenamento dos e-mails e posteriormente, como enviar um boletim a todos eles, com o estímulo de que não apareçam todos os destinatários no campo "Para:" da mensagem.

Criação de tabela no banco de dados

Mediante seu gerenciador do banco de dados MySQL (certamente "phpMyAdmin") deve criar uma nova tabela em seu banco de dados. Aqui lhe facilitamos o arquivo de texto para isso:

CREATE TABLE usuarios (
id bigint(7) NOT NULL auto_increment,
nick varchar(100) NOT NULL,
passoword varchar(100) NOT NULL,
nome varchar(255) default NULL,
email varchar(100) default NULL,
KEY id (id)
)

E ficará assim em seu phpMyAdmin:


Depois disso, você já tem a tabela necessária para armazenar os dados dentro de um banco de dados MySQL. Poderia explicar como introduzir os dados nesta tabela mediante formulários de registro... porém isso já deixo a gosto do webmaster.

Envio do boletim

Para enviar o boletim só deve mudar os dados do seguinte arquivo php pelos de seu banco de dados e terá seu arquivo pronto. Para enviar o boletim só tem que executar este arquivo em seu servidor (carregá-lo: por exemplo, entrar em http://usuarios.lycos.com/seunomedeusuario/prova.php):

<?php
  $minha_conexion=mysql_connect('servidor','nome_de_usuarior','senha') or die('Não se pode conectar com o banco de dados!');

/*
Servidor: aqui deve colocar o endereço de seu servidor, na maioria das companhias é 'localhost'
Nome_de_usuario: deve colocar seu nome de usuário no servidor.
Senha: sua senha.
*/

   mysql_select_db('banco_de_dados',$minha_conexao);

/*
Banco_de_dados: nome de seu banco de dados.
*/

   $query_Tabela = "SELECT email FROM usuarios ORDER BY id ASC";
   $Tabela = mysql_query($query_Tabela, $minha_conexao) or die(mysql_error());

/*
E-mail: é o nome do campo que requeremos, se seguiu nossas instruções criando nossa mesma tabela no banco de dados não deve mudar isto.
Usuários: é o nome da tabela onde está o campo 'email', se seguiu nossas instruções criando nossa mesma tabela em banco de dados não deve mudar isto.
*/

   //elaboramos cadeia de emails
  $osemails="";
  while ($row_Tabela=mysql_fetch_assoc($Tabela)) {
   $osemails.=($row_Tabela['email'].", ");
   }

  $largo=strlen($osemails);
   if ($largo>2)
{
   //tiramos ultimos ", "
   $osemails=substr($osemails,0,$largo-2);
}
else
{
   echo "Não há destinatários!";
   die();
};

// se definem os argumentos de mail( ):
$assunto='Prova de email atraves de PHP';
$mensagem='<html>
<head>
   <title>Titulo da Pagina</title>
</head>
<body>
   <p>Esta é uma prova de emails em formato HTML</p>
   Preços de nossos produtos:
   <table>
    <tr>
   <th>PRODUTO<th>PRECO<th>PROMOCAO</th>
   </tr>
  <tr>
   <td>Refrigerante Grande</td><td>25,50</td><td>23,00</td>
  </tr>
  <tr>
    <td>Sorvete Napolitano</td><td>27,50</td><td>25,00</td>
  </tr>
  <tr>
   <td>Batatas</td><td>18,50</td><td>15,00</td>
  </tr>
  </table>
</body>
</html>';

/*
Aqui deve colocar seu email em formato HTML
*/

$envia='enviante';
$remete='email_remetente';

/*
Enviante: Nome do enviante
Email_remetente: email que deseja mostrar como remetente.
*/

/// Envio do email:

mail(null, $assunto, $mensagem, "MIME-Versao: 1.0
Content-type: text/html; charset=iso-8859-1
From: $envia <$remete>
Bcc: $osemails" . "\r\n") or die("Erro ao Enviar o Email");
echo "Mensagem Enviado com Sucesso!"; //

   mysql_free_result($Tabela);
   mysql_close($minha_conexao);
?>
Já temos nosso sistema de envio de boletins, não teremos que depender de ninguém.

O único problema que apresenta este sistema é que ao não aparecer nada no campo "Para:" do email, alguns gerenciadores de email o colocam como "correio não desejado". Aceito contribuições de outros leitores para melhorá-lo.





Comentários do artigo
Foram enviados 5 comentários ao artigo
1 comentário não revisado
4 comentários revisados:
Por: Manuel Américo Ribeiro Alves da Rocha
09/9/08
Para não acontecer isso no para podes colocar ou um e-mail falso ou o e-mail de quem está a enviar ou então um e-mail criado para o efeito. No entanto tens ai um bom script. Muito bom mesmo.
" Erro ao Enviar o Email "
Por: Álvaro
15/3/09
Está apresentando a mensagem ; "Erro ao Enviar o Email" e
não consigo identificar o motivo.
Poderia dar uma ajuda?
duvida
Por: edermunari
20/7/09
cara sua dica ta show parabens...
sera que vc pode me ajudar com um problema?
criei meu site e envie bd td certo configurei usuario senha e bd mas nao esta enviando para o bd quando preencho o formulario de cadastro no site e clico em enviar ele recarrega a pagina e nao envia os dados... o que pode ser?
correção
Por: joaquim_afonso
21/11/09
Gostei muito do artigo, simples e pratico. Há um pequeno acerto a ser feito devido a um erro de digitação. A variavel $minha_conexao esta definida em outra parte do programa com um nome diferente, para um iniciante pode ser dificil detectar em um primeiro momento.

Usuários :    login / registro
Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato