Porta USB – Entenda como funciona

4

Posted by John-Henrique | Posted in Segurança | Posted on 26-09-2009

USB

USB - Mitos e verdades sobre o padrão de conexão Hot-Swap

Tenho visto muitas pessoas brigando na hora de remover o pen drive da porta USB do computador. De um lado o dono do pen drive dizendo que pode queimar o pen drive caso seja removido sem desconectar o dispositivo através do ícone auxiliar do Windows, aquele que aparece do lado do relógio do Windows. Do outro lado o dono do computador dizendo que não tem problema e não tem risco de queimar o pen drive mas, afinal como funciona a porta USB onde conectamos o pen drive?

A importância de realizar um backup sempre

10

Posted by John-Henrique | Posted in Bronca, Básico, Desenvolvimento, Macetes, Problemas, Segurança | Posted on 22-08-2007

Desde que conheci o procedimento de realizar cópias de [bp]segurança[/bp] chamada backup, realizo freqüentemente uma cópia dos dados importantes em minha máquina. Todas as sextas-feiras, até pra aproveitar que é sexta e enrrolar o trampo :D .

Tenho feito isso a mais de 5 anos, porém na última segunda feira, ao realizar o backup, pensei “ah, vou fazer o backup na unidade D e depois peço pro técnico da empresa formatar a máquina pra mim, assim eu fico livre…”, que pensamento idiota, me arrependerei amargamente para o resto de minha vida.

Nos últimos nove meses tenho desenvolvido um sistema acadêmico para uma rede de universidades particulares do estado de Mato Grosso, inclusive o sistema encontra-se em uso, mas, devido ao meu inocente pensamento, os nove meses de trabalho foram pelo ralo…

Tudo por que eu pedi para o técnico da universidade formatar a máquina pra mim, eu sempre fazia isso, aliás, eu sempre fazia o [bp]backup[/bp] dos projetos importantes no Gmail, gravava em CD e ainda salva-va tudo na unidade D, nunca tive problema algum, porém na segunda feira passada, nunca me esquecerei da data 20/08/2007, deixei bem claro para o técnico.

“Formate apenas a unidade C, não mexa na unidade D, ela possui muitos arquivos importantes.”

Ele ficou a manhã toda mechendo na máquina quando voltei no periodo da tarde, lá pelas duas da tarde, ele ainda estava mexendo na máquina, achei extranho e questionei o por que dele não ter terminado. Para minha tristeza o cara tinha feito o serviço perfeito.

E ainda sorridente disse, olha só, a máquina está leve, rápida e você nunca viu ela trabalhar tão bem assim, realmente o sistema operacional estava trabalhando como deveria, abria os menus rápidamente e listava os diretórios de rede e arquivos tão rápido que eu pensei que era outra máquina não a minha.

Ao sentar-me na cadeira a primeira coisa que veio a minha cabeça foi, “Vou instalar os programas que estão salvos na unidade D e trabalhar…”, tomei um susto quando vi que a unidade D possuia apenas uma pasta com o nome Windows, fiquei puto da vida, o cara formatou meu computador todo.

Alterei as configurações pra exibir arquivos ocultos, executei o recovery (programa para recuperar dados perdidos) e nada os meus dados foram todos perdidos.

O cara formatou tudo unidade C, D acho que ele só não formatou a unidade A, por que eu não possuo uma. Cara nove meses de desenvolvimento perdidos somente por que eu quis ficar livre na segunda-feira, devia ser praga do meu chefe.

Nenhum dos programas de recuperação de dados conseguiu recuperar algum arquivo importante, realizei o scanner 5 vezes e recuperei mais de 80 Gb de dados, somente arquivos do sistema, músicas, vídeos, fotos e nada dos arquivos dos sites, softwares e sistemas já desenvolvidos.

Aprendi uma coisa com tudo isso, sempre devo realizar o backup, sempre devo formatar minha própria máquina, sempre devo configurar minha máquina. Sempre eu, sempre sempre.

Alternativa para remover ou desinstalar o mDNSresponder.exe

31

Posted by John-Henrique | Posted in Pragas virtuais, Segurança, Web | Posted on 04-05-2007

Se você encontrou este programa rodando em sua máquina e deseja remove-lo, você pode tentar desinstalar o [bp]iTunes[/bp] que é um programa da Apple. Você pode remover ou desinstalar o iTunes através do menu Instalar Remover programas.

Se você não sabe o que é o mDNSresponder.exe veja isso.

Caso você não encontre o iTunes dentro do Instalar Remover programas você terá que seguir os procedimentos abaixo para remover o mDNSresponder.exe.

ATENÇÃO: Não vá mexendo em todo e qualquer lugar pra ver o que acontece você pode ter muita dor de cabeça com o que fizer, apenas siga as instruções.

  1. Acesse o menu Iniciar
  2. Selecione Executar
  3. Digite services.msc
  4. Você verá a janela Serviços, nela estão descritos todos os programas que estão sendo processados no momento entre outras informações.
  5. Observe que a janela possui algumas colunas localize na coluna Descrição o serviço ##Id_String1.6844F930_1628_4223_B5CC_5BB94B879762# # este é o Bonjour Service.Desinstalar e Remover mDNSresponder.exe
  6. Agora localize a coluna Tipo de inicialização e dê um clique duplo na linha correspondente ao mDNSresponder.exe que é o código citado acima.
  7. Selecione a opção Desativado
  8. Clique no botão Parar

Ao finalizar você terá desativado o mDNSresponder.exe, até o momento ainda não encontrei alguma alternativa para desistala-lo por completo, no entanto, estes procedimentos vão impedir que ele funcione.

E como eu já havia dito antes, atualize seu [bp]antivírus[/bp] o quanto antes para evitar dores de cabeça.

Recadastramento do hotmail

97

Posted by John-Henrique | Posted in Problemas, Segurança, Web | Posted on 24-04-2007

Nos últimos dias algum spamer tem enviado emails aos usuários do Windows Live Messenger (antigo Hotmail e Msn) informando o cancelamento da conta no serviço dentro do prazo de 72 horas, na mensagem ainda existem dois links que apontam para um arquivo DOS, provavelmente com intuito de instalar um trojan na máquina do usuário.

Como todos os outros emails com o mesmo objetivo nos próximos dias a mensagem ou o link pode mudar, mesmo assim informo aqui a mensagem e o link falso.

NÃO CLIQUE NESTE LINK
http://www.coolcaptures.co.uk/product_images/full/www.hotmail.com

Abaixo segue uma cópia do email que está sendo enviado aos usuários do Windows Live Messenger (antigo hotmail e Msn).

Prezado usuario, seu e-mail esta em processo de expiracao, dentro de 72hrs se nao for feito o recadastramento
seu e-mail sera automaticamente apagado de nosso sistema.
Para maior facilidade, voce pode escolher se ira reativar ou cancelar o seu correio eletronico.

Siga os passos a seguir.

Recadastramento de Correio eletronico
O recadastramento sera efetuado apos a entrada em nossa pagina,
para fazer a reativacao do seu Correio basta dar um clique logo abaixo e ir em abrir.

Recastramento do Correio eletronico [Ativar conta]

Descadastramento de Correio eletronico
Se sua escolha for cancelar, voce pode esperar as 72hrs, ou dar um clique abaixo e ir em abrir.

Cancelamento do Correio eletronico [Cancelar Conta]

Este mensagem serve unicamente como notificacao, e nao serao monitoradas respostas.

- Equipe Hotmail © 2007 Microsoft e seus fornecedores. Todos os direitos reservados.

Atualize seu [bp]antivírus[/bp] agora e evite problemas com novas pragas virtuais.

É possível que seu email tenha sido bloqueado mas, não terá sido por conta deste recadastramento, afinal, o recadastramento não existe é apenas um email de spam tentando distribuir vírus, caso sua conta esteja bloqueada tente realizar os pocedimentos abaixo.

Algumas contas são bloqueadas por abuso do sistema, por exemplo, existe um limite de envio de emails diários, nem sempre está informação está disponível, normalmente fica no contrato de uso (que ninguém lê). Se por algum motivo você esteja enviando grande quantidade de emails por dia sua conta poderá ser penalizada.

O próprietário do Windows Live Messenger antigo Hotmail é a Microsoft, sendo assim, você poderá entrar em contato com o suporte técnico da Microsoft e tentar reativar a conta.

Possui uma conta Hotmail a alguns anos e a utilizava profissionalmente, além de receber diversos emails de spam tive o grande desprazer de ter a conta bloqueada e perdi todos os contatos, histórico de mensagens entre outras informações importantes que lá existiam. Entrei em contato com a Microsoft e negociando por mais de 1 mes ainda não consegui recuperar minha conta. Eles solicitam que o você envie um fax com os dados pessoais e firma registrada, cópia do endereço, CPF, RG e um monte de outras coisas.

Acabei achando melhor desistir do Hotmail e acreditar no Gmail, e estou feliz com a mudança, muito mais organizado e produtivo.

Para TENTAR resolver o problema, desbloqueando uma conta cancelada, você precisará contactar a Microsoft através dos seguintes endereços:
Suporte ao Windows Live
https://support.live.com/?scrx=1

Suporte ao cliente
https://support.microsoft.com/contactus/emailcontact.aspx?scid=sw;pt-br;1403&ln=pt-br&ws=latamcs&ws=mscom

Curioso olhando seu notebook

0

Posted by John-Henrique | Posted in Livre, Segurança, Web | Posted on 09-04-2007

Talvez você já tenha passado pelo incomodo de alguém ficar olhando o que você está fazendo em seu notebook, normalmente isso ocorre quando estamos no avião, barco, ônibus ou mesmo no carro. Além de parecer que o curioso está vigiando o que fazemos é muito chato ter que responde-lo pra que serve cada botãozinho e desenhinho que aparece na tela.

Para resolver este problema um blogueiro criou uma página de internet que resolve este problema e com um pouco de criatividade dá pra resolver outros :D .

Conheça o incrível solucionador de problemas.

Quem diria o google errou, erro no analytics

4

Posted by John-Henrique | Posted in Livre, Problemas, Segurança, Web | Posted on 02-04-2007

Será que ninguém percebeu o erro que está disponível no FAQ do analytics? Não sei se fui apenas eu quem percebeu, mas, o suporte do google no Brasil já sabiam, tenho certeza, pois eu havia percebido o erro e os notifiquei.

O erro encontrado por mim no analytics não prejudica o usuário do sistema e também não expõe dados do site a outros indivíduos na web, porém erro é erro, e este erro impede que o analytics funcione, ou melhor, impede que as funções de analise do analytics funcionem.

Em cinco de fevereiro deste ano eu estava pesquisando algumas dúvidas do Google Analytics referente a analise de páginas dinâmicas quando me deparei com o item:

Como faço para instalar o código de monitoramento em sites em PHP?

Cliquei para ver as explicações e quem diria o código estava incorreto! Então resolvi notifica-los do erro. Hoje quando por acidente encontrei o link do item da faq em meus favoritos e resolvi visitar pra ver alguma novidade, fiquei surpreso quando vi que até hoje o suporte do Analytics ainda não efetuou a correção.

Bom, pra parar de enrrolar vou publicar logo o erro.

Este é a parte do código que evoca o urchinTracher (uma espécie de googleBot, só que neste caso analyticsBot :D ).

<script src=”http://www.google-analytics.com/urchin.js” type=”text/javascript”>
</script>
<script type=”text/javascript”>
_uacct=”UA-XXXXXX-X”;
urchinTracker(’<?php echo $virtual_page ?>’);
</script>
<?php
// End Analytics tracking code
?>

Neste código está tudo certo nenhum erro, mas, neste código…

$virtual_page = “exemplo_página_nome_1″;
<?php include_once(”analyticstracking.php”); ?>

Aqui já é outra história, note que a variável $virtual_page está fora dos delimitadores PHP sendo assim o analytics nunca vai realizar a analise do site. E ale disso o navegador vai exibir para o visitante do site a variável $virtual_page e o valor que estiver contido nela.

A solução é simples apenas alterar a posição do delimitador de modo que a variável $virtual_page fique dentro dos delimitadores.

Ficando assim:

<?php
$virtual_page = “exemplo_página_nome_1″;
include_once(”analyticstracking.php”);
?>

Enviei novamente o email notificando o suporte do Analytics para que eles corrijam, vamos ver se desta vez eles vão corrigir.

Solução para envio de emails em grande quantidade

37

Posted by John-Henrique | Posted in Básico, Livre, Problemas, Segurança, Web | Posted on 29-03-2007

Tenho visto que muitos webmasters tem tido dificuldades para enviar algum informativo (newsletter) devido ao limite de envio de emails imposto por alguns hosts, normalmente o limite fica entre 100 e 400 emails por hora.

Este problema acaba gerando um grande desconforto, pois, imagine você que nosso site possua 1000 assinantes se você tivesse que enviar tudo isso manualmente (existe essa possibilidade?) iria demorar várias horas se não dias.

Os hosts que possuem este limite fazem isso justamente para evitar envio de emails em massa comumente conhecido como SPAM, que nada mais é do que envio de email não solicitado. Apesar do limite imposto alguns usuários talvez até sem saber acabam enviando emails acima do limite, então os emails que ultrapassam o limite são barrados, algumas empresas devolvem o email ao remetente outras apenas cancelam o envio e notificam o remetente. Algumas vezes os administradores do host chegam a decisões extremas como cancelamento da conta de hospedagem quando o envio é continuo.

Pois bem, pensando numa solução para o problema criei um pequeno e simples script em PHP/MySQL que se encarrega de enviar os emails dentro do limite imposto pelo host (ou servidor).

Antes de tudo gostaria de destacar que este material foi criado com intuito de resolver o problema, sendo assim estou me baseando na idéia de que você tenha no mínimo conhecimentos básicos em PHP e MySQL.

Primeiramente crie esta tabela em seu banco MySQL para que você possa utilizar o script.
CREATE TABLE newsletter (
id INT(4) NOT NULL AUTO_INCREMENT,
nome VARCHAR(60) NOT NULL,
email VARCHAR(120) NOT NULL,
codStatus INT(1) NOT NULL DEFAULT 0,
PRIMARY KEY(id)
);

Esta tabela possui quatro campos (id, nome, email e codStatus) estes campos são responsáveis pelo armazenamento e organização dos dados contidos na tabela, a organização consiste em:

  1. ID
    Este campo serve apenas para identificar cada registro como único.
  2. NOME
    Este campo é responsável por armazenar o nome de nosso assinante.
  3. EMAIL
    Este campo é responsável por armazenar o endereço eletrônico (email) de nosso assinante.
  4. CODSTATUS
    Este campo possui papel importante no envio, através dele é que o script identificará pra quem já foi enviado a newsletter. Isso é possível devido ao tipo de campo inteiro tamanho 1, sendo que o valor 0 representa emails que ainda não foram enviados e 1 representa a emails que já foram enviados.

Bom, eu criei a estrutura da tabela, mas, não irei disponibilizar os registros para que a tabela seja populada, sendo assim, você terá que criar ai seus próprios registros.

Tendo nossa tabela criada vamos então (finalmente) ver o tal script.

// DADOS DE ACESSO AO BANCO MYSQL
$host = "HOST";
$banco = "BANCO";
$usuario = "USUARIO";
$senha = "SENHA";

Adicionamos aqui os dados necessários para a conexão com nosso servidor MySQL não há nada extraordinário aqui, se você não sabe quais são estes dados entre em contato com seu servidor de hospedagem para solicita-los.

// NOME DA TABELA
$tabela = "newsletter";
// CAMPOS UTILIZADOS PARA A CONSULTA
$campos = "id, nome, email";
// NUMERO MÁXIMO DE ENVIO
$quant = 10;
// TEMPO ENTRE UM PROCESSO DE ENVIO E OUTRO
$seg = 36;

Na segunda linha informamos o nome da tabela onde se encontram os emails de nossos assinantes, eu criei a variável “$tabela” somente para facilitar as coisas pra quem está utilizando uma tabela com nome diferente.

Na quarta linha informamos os campos que vão ser utilizados no processo do envio. O campo id precisa ser informado pois é através dele que vamos informar qual email acaba de ser enviado.

O campo nome e email (nem precisa falar) são obrigatórios pois vão informar ao script o nome e email do destinatário.

Na sexta linha informamos a quantidade de emails que deve ser enviado por vez. Note que eu adicionei o valor “10″ você pode alterar este valor se quiser.

Na oitava linha informamos o tempo (em segundos) que deve ser aguardado entre um processo de envio e outro.

// DADOS DO EMAIL A SER ENVIADO
$assunto = "Envio de newslleter";
$msg = "Meu primeiro email enviado por pacotes em PHP/MySQL";
$nome_remetente = "Nome Remetente";
$email_remetente = "Email Remetente";

Na segunda linha informamos o título do email a ser enviado, este título corresponde ao assunto do email.

Na terceira linha informamos a mensagem do email, ou seja, a informação que deve ser enviada ao destinatário.

Na quarta e quinta linha informamos o nome e email do remetente (pessoa que envia), este ponto é importante, sempre que possível adicione um email verdadeiro pois é através dele que seu usuário poderá respondê-lo e também por que alguns servidores não permitem o envio de emails via PHP a menos que o campo “remetente” seja um email verdadeiro e principalmente existente no servidor, sendo assim, se seu site chama-se “site.com” seu email deve ser “algumacoisa@site.com”.

// ADICIONA AO CABEÇALHO DO EMAIL AS INFORMAÇÕES DO REMETENTE (QUEM ENVIA)
$cabecalho = "From: ". $nome_remetente ." <". $email_remetente .">";

// ADICIONA O CABEÇALHO PARA ENVIAR FORMATAÇÃO HTML
$cabecalho .= “MIME-Version: 1.0\r\n”;
$cabecalho .= “Content-type: text/html; charset=iso-8859-1\r\n”;

// CONECTA COM O SERVIDOR MYSQL
mysql_connect($host,$usuario,$senha);

// SELECIONA O BANCO
mysql_select_db($banco);

// RESGATA O VALOR DA GLOBAL INICIO
$inicio = $_GET["inicio"];
// ATRIBUI O RESULTADO DA SOMA ENTRE INICIO E QUANT
$fim = $inicio + $quant;

Nestas linhas fazemos (nesta ordem):

  1. Adicionamos as informações do remetente ao cabeçalho do email para que seja usado posteriormente.
  2. Adicionamos as informações para que o email aceite formatação HTML.
  3. Conectamos com o servidor MySQL, utilizando os dados de usuário, senha e host informados no inicio do script.
  4. Resgatamos o valor de uma variável global que será responsável por informar em qual registro deve ser iniciado o processo de envio dos emails.
  5. Atribuímos variável “$fim” o resultado da soma entre as variáveis “$inicio” e “$quant”.

// VERIFICA SE FOI ATRIBUIDO VALOR A VARIAVEL "INICIO"
if($inicio == ""){
// ATRIBUI O VALOR 0 CASO NÃO EXISTA VALOR ATRIBUIDO
$inicio = 0;
}else{
// ATRIBUI O VALOR DA GLOBAL INICIO CASO JA EXISTA VALOR ATRIBUIDO
$inicio = $_GET["inicio"];
}

  1. Verificamos se o valor da variável “$inicio” é igual a nada.
  2. Caso a verificação retorne verdadeiro, a variável “$inicio” passe a possuir o valor 0 (zero), indicando que ainda não foi enviado nenhum email, ou seja, o processo de envio ainda não começou.
  3. Caso a verificação retorne falso (o valor da variável pode ser qualquer coisa), ou seja, indica que o processo de envio já foi iniciado então a variável “$inicio” passe a possuir o valor que existir na global inicio.

// EXECUTA A CONSULTA OU INFORMA UM ERRO CASO OCORRA
$sql = mysql_query("SELECT ". $campos ." FROM ". $tabela ." WHERE codStatus = 0 LIMIT ". $inicio .",". $quant)or die(mysql_error());

  1. Montamos a consulta SQL necessária para retornar os dados solicitados pelo script.
  2. Adicionamos através das variáveis “$campos”, “$tabela”, “$inicio” e “$quant” os valores aos campos que vão ser utilizados no envio, nome da tabela onde encontram-se os dados dos assinantes, o valor que identifica de onde deve iniciar o envio e o valor que informa a quantidade máxima a ser enviada

// VERIFICA SE AINDA EXISTEM EMAILS A SEREM ENVIADOS
if(mysql_num_rows($sql) == 0){

// ALTERANDO O VALOR DO CAMPO CODSTATUS PARA 0
@mysql_query(“UPDATE “. $tabela .” SET codStatus = 0″);

// INFORMO O TÉRMINO DO PROCESSO
echo “Fim do processo de envio!”;
}else{

// CONTINUA EFETUANDO O ENVIO
echo “<meta http-equiv=\”refresh\” content=\”" . $seg . “,URL=?inicio=”. $fim .”\”>”;
}
Esta é uma parte importante no sistema.

  1. Verificamos se a quantidade de registros retornados é 0 (zero), ou seja, nenhum registro encontrado.
  2. Caso a quantidade de registros retornados seja 0 (zero), o script atualiza todos os registros existentes na tabela informada na variável “$tabela” (no meu exemplo “newsletter”), note que a atualização informa que o valor do campo codStatus deve ser alterado para 0. Você deve ter lido isso no início deste artigo.
  3. Após finalizar a atualização de todos os registros exibimos a mensagem informando o término do processo.
  4. Caso a quantidade de registros não seja 0 (zero), ou seja, foi encontrado um ou mais registros é “impresso” a meta refresh, está meta atualiza a página a cada intervalo de segundos, no nosso caso ela será atualizada a cada 10 segundos que foram informados através da variável $seg.
  5. Note que a meta refresh possui dois paramentos content que é o tempo em segundos que devem ser aguardados antes de atualizar a página e URL que é o endereço da página que deve ser carregada após o tempo informado em content, em nosso caso adicionei a parâmetro de url “inicio” que receberá o valor da variável “$fim”, esta variável informa em que número foi finalizado o último processo de envio.
  6. Se o item anterior foi executado o script irá aguardar o tempo informado e depois continuará enviando os emails.

// CRIA O LAÇO REPETITIVO
while($r = mysql_fetch_array($sql)){

// ADICIONAMOS OS PADRÕES DE DESTINATÁRIO
$para = $r["nome"] .”<”. $r["email"] .”>”;

// ENVIA O EMAIL PARA O DESTINATÁRIO
if(mail($para, $assunto, $msg, $cabecalho)){

// INFORMA SE A MENSAGEM FOI ENVIADA
echo “Mensagem enviada para:
\r”. $para;

// ALTERO O CODSTATUS PARA 1
@mysql_query(“UPDATE”. $tabela .” SET codStatus = 1 WHERE id = “. $id);
}else{

// INFORMO SE A MENSAGEM NÃO FOI ENVIADA
echo “Mensagem não enviada para:
\r”. $para;
}

}

  1. Criamos um laço repetitivo que será responsável por transferir os valores retornados na consulta SQL realizada anteriormente.
  2. Com os dados do destinatário, tentamos enviar o email
  3. Caso o envio seja bem sucedido é exiba a mensagem informando para quem foi enviado e em seguida atualizamos o registro referente ao email que acabamos de enviar, note que agora atualizamos o campo “codStatus” para conter o valor 1 (Email enviado).
  4. Caso a mensagem não seja enviada o script exibe a mensagem informando pra quem não foi possível enviar.

// LIBERA MEMORIA USADA NA CONSULTA
mysql_free_result($sql);
// FECHA A CONEXÃO COM O BANCO
mysql_close($conexao);

  1. Depois de ter realizado a consulta liberamos a memória utilizada no processo. Isso é necessário apenas para grandes consultas, ou para quem tem limite de processamento (CPU).
  2. Fechamos a conexão que haviamos criado anteriormente.

Bom, espero que isso seja útil para você (Demorei muito tempo digitando isso aqui e explicando tudo :D ).

Para aqueles que queiram saber mais sobre as funções utilizadas aqui disponibilizo aqui os links para tais.

mysql_connect()
mysql_close()
mysql_select_db()
mysql_fetch_array()
mysql_free_result()
mysql_query()
mysql_num_rows()
while()
mail()

E por fim disponibilizo aqui o script completo para quem quiser testa-lo ou utiliza-lo.

<?PHP

############################
# O CONTEÚDO DESTE NÃO FOI
# CRIADO COM O INTUITO DE
# DISTRIBUIR SPAM, OBRIGADO.
############################

// DADOS DE ACESSO AO BANCO MYSQL
$host = “HOST”;
$banco = “BANCO”;
$usuario = “USUARIO”;
$senha = “SENHA”;

// NOME DA TABELA
$tabela = “newsletter”;
// CAMPOS UTILIZADOS PARA A CONSULTA
$campos = “id, nome, email”;
// NUMERO MÁXIMO DE ENVIO
$quant = 10;
// TEMPO ENTRE UM PROCESSO DE ENVIO E OUTRO
$seg = 36;

// DADOS DO EMAIL A SER ENVIADO
$assunto = “Envio de newslleter”;
$msg = “Meu primeiro email enviado por pacotes em PHP/MySQL”;
$nome_remetente = “Nome Remetente”;
$email_remetente = “Email Remetente”;

// ADICIONA AO CABEÇALHO DO EMAIL AS INFORMAÇÕES DO REMETENTE (QUEM ENVIA)
$cabecalho = “From: “. $nome_remetente .” <”. $email_remetente .”>”;

// ADICIONA O CABEÇALHO PARA ENVIAR FORMATAÇÃO HTML
$cabecalho .= “MIME-Version: 1.0\r\n”;
$cabecalho .= “Content-type: text/html; charset=iso-8859-1\r\n”;

// CONECTA COM O SERVIDOR MYSQL
mysql_connect($host,$usuario,$senha);

// SELECIONA O BANCO
mysql_select_db($banco);

// RESGATA O VALOR DA GLOBAL INICIO
$inicio = $_GET["inicio"];

// VERIFICA SE FOI ATRIBUIDO VALOR A VARIAVEL “INICIO”
if($inicio == “”){
// ATRIBUI O VALOR 0 CASO NÃO EXISTA VALOR ATRIBUIDO
$inicio = 0;
}else{
// ATRIBUI O VALOR DA GLOBAL INICIO CASO JA EXISTA VALOR ATRIBUIDO
$inicio = $_GET["inicio"];
}

// ATRIBUI O RESULTADO DA SOMA ENTRE INICIO E QUANT
$fim = $inicio + $quant;

// EXECUTA A CONSULTA OU INFORMA UM ERRO CASO OCORRA
$sql = mysql_query(“SELECT “. $campos .” FROM “. $tabela .” WHERE codStatus = 0 LIMIT “. $inicio .”,”. $quant)or die(mysql_error());

// VERIFICA SE AINDA EXISTEM EMAILS A SEREM ENVIADOS
if(mysql_num_rows($sql) == 0){

// ALTERANDO O VALOR DO CAMPO CODSTATUS PARA 0
@mysql_query(“UPDATE “. $tabela .” SET codStatus = 0″);

// INFORMO O TÉRMINO DO PROCESSO
echo “Fim do processo de envio!”;
}else{

// CONTINUA EFETUANDO O ENVIO
echo “<meta http-equiv=\”refresh\” content=\”" . $seg . “,URL=?inicio=”. $fim .”\”>”;
}

// CRIA O LAÇO REPETITIVO
while($r = mysql_fetch_array($sql)){

// ADICIONAMOS OS PADRÕES DE DESTINATÁRIO
$para = $r["nome"] .”<”. $r["email"] .”>”;

// ENVIA O EMAIL PARA O DESTINATÁRIO
if(mail($para, $assunto, $msg, $cabecalho)){

// INFORMA SE A MENSAGEM FOI ENVIADA
echo “Mensagem enviada para:
\r”. $para;

// ALTERO O CODSTATUS PARA 1
@mysql_query(“UPDATE”. $tabela .” SET codStatus = 1 WHERE id = “. $id);
}else{

// INFORMO SE A MENSAGEM NÃO FOI ENVIADA
echo “Mensagem não enviada para:
\r”. $para;
}

}

// LIBERA MEMORIA USADA NA CONSULTA
mysql_free_result($sql);
// FECHA A CONEXÃO COM O BANCO
mysql_close($conexao);
?>