Sistema de Newsletter - Parte 1 Autor: Marcelo Souza Ramos Data de publicação: 24/03/2007 Parte do Tutorial: 1 Quantidade de Visualização: 4766

Coluna Dreamweaver - Sistema de Newsletter - Parte 1
Introdução
Esse é um sistema feito em php e banco de dados mysql, ele realiza o cadastro e remoção de e-mail mediante confirmação que é enviada por e-mail. Faz o envio de e-mails em formato de texto ou HTML através de um servidor SMTP. Optei em utilizar a conexão SMTP devido a provedores como o IG não receberem mensagens vindo de uma conexão sem autenticação, e a maioria dos outros servidores classificarem como lixo eletrônico. Esse tutorial está dividido em quatro partes, sendo essa a primeira.

Pré-requisito
Conhecimentos básico em PHP e MYSQL Autorização para criar tabelas no banco de dados Recomendo a leitura dos artigos escrito pelo Marcelo Ariatti e Fábio Ricotta sobre o desenvolvimento do conteúdo de uma newsletter

Conteúdo
Vamos precisar de uma tabela para armazenar os endereços de e-mail, então vou passa a estrutura da tabela que deve se chamar newsletter para que vocês possam criar.

Ou se preferir aqui vai o código de criação da tabela newsletter CREATE TABLE `newsletter` ( `id` int(11) NOT NULL auto_increment, `email` varchar(40) default NULL, `codigo` varchar(150) NOT NULL default '', `ativo` varchar(8) default NULL, PRIMARY KEY (`id`)

Agora vamos criar as páginas que serão utilizadas em todo o tutorial, ou seja, nas quatro partes 1. 2. 3. 4. 5. Pressione Ctrl + N Selecione a guia Geral Na opção Categoria selecione a opção Pagina Dinâmica Na opção Pagina Dinâmica selecione a opção PHP Clique em Criar

6. Na barra de inserir clique na guia PHP 7. Agora clique no botão Bloco de código

8. Salve com o nome de config.php, com base nesses mesmo processos crie as páginas: enviar_email.php, index.php, confirmar.php e smtp.class.php que serão utilizada nas proximas etapas Agora vamos criar o formulário para que os usuarios possam se cadastrar e efetuar e descadastramento do seu e-mail então abra a página index.php 1. Na barra inserir clique na guia Formulários 2. Clique no botão Formulário

3. No Inspetor de propriedade coloque como ação para enviar para a página enviar_email.php

4. Em seguida clique no botão Campo de texto

5. No Inspetor de propriedade coloque o nome do campo de texto como e-mail

6. Volte para a guia Formulários da barra inserir e clique no Botão de rádio

7. No Inspetor de propriedade coloque como nome do botão opcao e o valor de assinar

8. Volter novamente para a guia Formulário da barra inserir e clique no botão rádio

9. No Inspetor de propriedade coloque como nome do botão opcao e o valor de

remover

10. Clique no botão adicionar botão

Pronto o formulário ja foi criado. Você pode identificar os campos e editar este formulario desde que não altere os nomes e valores dos ampos. Se você estiver no modo de visualização do projeto mude para o modo de visualização do código. Para verificar o código gerado é igual o meu.

<form name="form1" method="post" action="enviar_email.php"> <input type="text" name="e-mail"> <input type="radio" name="opcao" value="assinar"> <input type="radio" name="opcao" value="remover"> <input type="submit" name="Submit" value="Enviar"> </form> Feche essa página e agora iremos criar a página que conterá a classe de conexão e autenticação do servidor SMTP. Devido a esse assunto não está relacionado a esse tutorial vamos apenas copiar o código e não altere nada. Essa é uma classe de autenticação SMTP que achei na internet, é muito simples porém muito funcional. Abra a página smtp.class.php e cole o código <? class Smtp{ var $conn; var $user; var $pass; var $debug; function Smtp($host){ $this->conn = fsockopen($host, 25, $errno, $errstr, 30); $this->Put("EHLO $host"); }

function Auth(){ $this->Put("AUTH LOGIN"); $this->Put(base64_encode($this->user)); $this->Put(base64_encode($this->pass)); } function Send($to, $from, $subject, $msg){ $this->Auth(); $this->Put("MAIL FROM: " . $from); $this->Put("RCPT TO: " . $to); $this->Put("DATA"); $this->Put($this->toHeader($to, $from, $subject)); $this->Put("\r\n"); $this->Put($msg); $this->Put("."); $this->Close(); if(isset($this->conn)){ return true; }else{ return false; } } function Put($value){ return fputs($this->conn, $value . "\r\n"); } function toHeader($to, $from, $subject){ $header = "Message-Id: <". date('YmdHis').".". md5(microtime()).".". strtoupper($from) ."> \r\n"; $header .= "From: <" . $from . "> \r\n"; $header .= "To: <".$to."> \r\n"; $header .= "Subject: ".$subject." \r\n"; $header .= "Date: ". date('D, d M Y H:i:s O') ." \r\n"; $header .= "X-MSMail-Priority: Low \r\n"; $header .= "MIME-Version: 1.0 \r\n"; $header .= "Content-type: text/html; charset=iso-8859-1\r\n"; return $header; } function Close(){ $this->Put("QUIT"); if($this->debug == true){ while (!feof ($this->conn)) { echo fgets($this->conn) . "<br>\n"; } } return fclose($this->conn); }

} ?>

Considerações final
Na próxima parte vamos montar a página que vai receber as informações desse formulário e executar os comandos que atenda a solicitação especificada. Qualquer comentário que vocês deixarem será bem vindo. Deixem seus pedidos de tutorias para as próximas colunas clicando aqui Autor: Marcelo Ramos - Colunista Dreamweaver do Portal MXSTUDIO Qualquer dúvida envie um email para ramos.marcelosouza@gmail.com ou acesse o nosso fórum