Importar No MySQL Uma Lista De Emails Em TXT

Há algum tempo fiz uma mala direta e precisei enviar para vários clientes.

Infelizmente na época não tinha o conhecimento e maturidade necessária para trabalhar em listas de emails.

Na matéria de hoje, estarei apresentando uma forma prática e simples onde você poderá importar emails de listas em .txt e exportá-las para banco de dados em MySQL.

Em anexo disponibilizo os ficheiros usados nesta matéria, onde você poderá testar de forma simples e prática.

email marketing

Configurando A Base de Dados

Antes de tudo, é necessário configurar a base de dados.

Com o BD já criado, acesse o ficheiro “conexao.php” e configure o ficheiro alterando as informações de acesso à base de dados (conforme script a seguir).



<?

// SERVIDOR

$database = "SERVIDOR";
$dbname   = "BASEDEDADOS";
$usuario  = "USUARIO";
$dbsenha  = "SENHA";

$conexao=mysql_connect ($database, $usuario, $dbsenha);

if($conexao){
      if (mysql_select_db($dbname, $conexao)){
           print "";
      }else{
           print "Não foi possível selecionar o Banco de Dados";
           }
      }else{
           print "Erro ao conectar o MySQL";
           }
          
?>

Após a configuração, vamos agora criar a tabela que será usada!

Criando A Tabela Na Base De Dados

Você terá 2 possibilidades:

Para configurar a base de dados através do script, abra o ficheiro script-sql.txt (disponível em anexo) e cole seu conteúdo no Programa utilizado para gerenciamento da base de dados.

Em nossas matérias utilizamos como padrão o MySQLFront. Caso tu também esteja utilizando este programa, clique em SQL Editor e cole o conteúdo do script (conforme código e imagem abaixo).



----- INSTALANDO A TABELA -----

CREATE TABLE `emails` (
  `id` int(11) NOT NULL auto_increment,
  `email` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
);

Após importar os dados, você já poderá fazer uso do sistema abaixo.

Criando o Formulário

A criação do formulário é super simples e você poderá customizá-lo da maneira que achar viável.

No ficheiro abaixo, há um pequeno formulário que envia o ficheiro a ser tratado na página upload.php (conforme script a seguir):



<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<META HTTP-EQUIV="Refresh" CONTENT="60">

<title>.:: WEBMASTER.PT :: Filtrando listas ::.</title>

<link rel="stylesheet" href="3col_rightNav.css" type="text/css">
</head><body>
<div id="masthead">
  <h1 align="center" id="siteName">WEBMASTER.PT Filtrando listas</h1>
</div>
<form action="upload.php" method="post" enctype="multipart/form-data" name="form1" enctype="multipart/form-data">
  <div align="center">
    Enviar Lista
      <input type="file" name="arquivo">
    <input name="Submit" type="submit" id="Submit" value="enviar">
  </div>
</form>
</body></html>

Veja a seguir como funciona o ficheiro upload.php.

Tratando O Ficheiro

Nesta matéria estamos usando o ficheiro upload.php.

Ele tem a finalidade apenas de pegar os emails de uma lista (que aparecem em ordem sequencial) e enviá-los para uma base de dados mysql.

Ele efetua limpeza, evitando que sua lista seja duplicada (veja o código a seguir):



<?php

include('conexao.php');

$arquivo = $_FILES['arquivo'];

function trocar_acentos ($arquivo){
    $arquivo = str_replace(' ','_',$arquivo);
        $arquivo = str_replace('á','a',$arquivo);
    $arquivo = str_replace('Á','a',$arquivo);
        $arquivo = str_replace('à','a',$arquivo);
    $arquivo = str_replace('À','a',$arquivo);
        $arquivo = str_replace('é','e',$arquivo);
    $arquivo = str_replace('É','e',$arquivo);
        $arquivo = str_replace('í','i',$arquivo);
    $arquivo = str_replace('Í','i',$arquivo);
        $arquivo = str_replace('ó','o',$arquivo);
    $arquivo = str_replace('Ó','o',$arquivo);
        $arquivo = str_replace('ú','u',$arquivo);
    $arquivo = str_replace('Ú','u',$arquivo);
        $arquivo = str_replace('(','',$arquivo);
        $arquivo = str_replace(';','',$arquivo);
        $arquivo = str_replace('0;não enviado;','',$arquivo);
    $arquivo = str_replace(')','',$arquivo);
        $arquivo = str_replace('ç','c',$arquivo);
    $arquivo = str_replace('Ç','c',$arquivo);
    $arquivo = str_replace('.JPG','.jpg',$arquivo);
        $arquivo = strtolower($arquivo);
    return $arquivo;
}

    $arquivo = trocar_acentos ($_FILES['arquivo']['name']);
        $arquivo_extensao = substr($arquivo,strpos($arquivo,'.')+1,strlen($arquivo)-strpos($arquivo,'.'));
        $imagem_destaque_tamanho = $_FILES['arquivo']['size'];
        $imagem_destaque_descricao = $_FILES['arquivo'];
        $imagem_destaque_data = date('d/m/Y');
        $uploaddir = "";

    $data = mktime();

        if ($arquivo != ""){
    if (file_exists($uploaddir.$arquivo)){ $arquivo = mktime()."_".$arquivo; }

        move_uploaded_file($_FILES['arquivo']['tmp_name'], $uploaddir . $arquivo);

    }else{
        $arquivo = "";
        }

$arquivo = $arquivo;

$arq = fopen($arquivo,'r');

while(!feof($arq)){
$email = fgets($arq); // cria um array com o conteudo do arquivo

$email = trim($email);

$query_select_email  = "SELECT * FROM emails where email = '$email'";
$rs_select_email     = mysql_query($query_select_email);

$contador_rows = mysql_num_rows($rs_select_email);

if($contador_rows >= 1){

}else{
$sql_insert = "INSERT INTO emails (email) VALUES('$email')";
$rs_insert = mysql_query($sql_insert);

}
}

if($rs_insert){
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript"> alert ("Lista exportada com sucesso")</SCRIPT>
<SCRIPT language="JavaScript">window.location.href="index.php";</SCRIPT>

<?
}

?>

OBS.: Caso queira, você poderá melhorar e muito esta lista, inserindo novos recursos, facilitando ainda mais seu trabalho.

Be Sociable, Share!

7 Comentários

  1. tim wang yan

    Me ajudou bastante! MUIITO OBRIGADO!

  2. Tiago

    Ótimo!!!!!!!!!!!
    Amigo, preciso de sua ajuda, como eu faço para adicionar mais uma opção. Vou criar mais um campo no MySQL chamado GRUPO, (1,2,3,4,..,…) como eu faço para definir isso na importação do arquivo TXT?

  3. Andre Roberto

    Olá …
    Estou iniciando em php e não estou coneguindo resolver um erro que está ocorrendo …
    $rs_select_email = mysql_query($query_select_email);—–> Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in
    ……Se puder me ajudar ficarei grato ;<)

  4. poderia me enviar os arquivos usados neste tutorial?
    desde ja muito obrigado pois já tenho uma possivel solução para meus problema!

  5. Rodrigo

    queria baixar os arquivos, não consigo fazer…

  6. Jonatas de Sozua

    Poderia me ajudar.
    Fiz todo passo a passo, mas gerou um erro e os arquivos não foram enviados.
    Linha 55 e linha 54  - Pode me ajudar?

    Warning: fgets(): supplied argument is not a valid stream resource in /home/httpd/vhosts/realnutri.com.br/httpdocs/enviaremail/upload.php on line 55
    Warning: feof(): supplied argument is not a valid stream resource in /home/httpd/vhosts/realnutri.com.br/httpdocs/enviaremail/upload.php on line 54

Participa! Comenta...