Envio de e-mail via SMTP autenticado usando PHP

Devido ao grande número de Span que são enviados diariamente, gerando um grande consumo de recursos dos servidores, além da frustração e perda de tempo dos usuários finais, os servidores estão cada vez mais apertando o cerco contra esse tipo de prática, desenvolvendo algoritmos que alem de não conseguir broquear eficientemente esses e-mail acabam broqueando mensagem que podem ser importantes. Como por exemplo, o servidor IG, que além de ser o menos eficaz contra esse tipo de pratica, acaba não recebendo nenhum e-mail que não seja enviado por servidor SMTP autenticado. Prejudicando muito os desenvolvedores. Portanto através de uma classe SMTP simples é bastante útil vamos desenvolver um sistema para envio de e-mail com autenticação SMTP. Lembrando que apenas realizar o envio de e-mail autenticado não garante que o seu e-mail não seja classificado como Spam, já que isso não ocorrer, depende de diversos fatores como horário, conteúdo, quantidade, tamanho e etc. Eu utilizo essa classe e nunca tive problemas com nenhum servidor, funciona normalmente com IG, HOTMAIL, BOL, UOL, TERRA, Click21 e muitos outros.

Essa classe faz o envio de e-mails em formato de texto ou HTML. Faça o Download da Classe

Agora vamos fazer a inclusão da classe smtp.class.php que vai realizar a conexão e autenticação SMTP para que os e-mails possam ser enviados.

Se você estiver no modo de visualização do projeto mude para o modo de visualização do código.

Dentro do Bloco de código vamos fazer a inclusão da classe smtp.class.php através do comando include

<?php
include ("smtp.class.php");
?>

Com a classe já incluída agora vamos configurar a conexão SMTP que necessita de um endereço de servidor (host), usuário (user), senha (pass) e informar que será ativada a autenticação (debug) para que possa enviar os e-mails corretamente. Para fazer a configuração basta apenas declarar o valor das variáveis utilizada na classe com os seus dados.

<?php
include ("smtp.class.php");

/* Configuração da classe.smtp.php */
$host = “smtp.mail.yahoo.com.br”; /*host do servidor SMTP */
$smtp = new Smtp($host);
$smtp->user = “usuario”; /*usuario do servidor SMTP */
$smtp->pass = “senha”; /* senha dousuario do servidor SMTP*/
$smtp->debug =true; /* ativar a autenticação SMTP*/
?>

Para que a mensagem possa ser enviada ela deve conté um remetente ($from) que é o seu e-mail, um destinario ($to) que vai se o e-mail de quem vai receber, um assunto ($subject), e a mensagem ($msg), e depois devemos chamar a classe SMTP, passar as configurações e mandar enviar.

/* envia uma mensagem */
$from= "seuemail@seusite.com.br"; /* seu e-mail */
$to = "destinario@seusite.com.br"; /* o e-mail cadastrado*/
$subject = "Teste de e-mail utilizando SMTP"; /* assunto da mensagem */
$msg = "Você está recebendo esta mensagem de teste<br>";
$msg .= "Para confirma clique no link abaixo";
$smtp->Send($to, $from, $subject, $msg);/* faz o envio da mensagem */

Esse é apenas um exemplo, no e-mail do destinario você pode colocar uma variavel vinda de um formulario, ou vindo de um banco de dados.

Escrito por Marcelo Ramos on abril 24, 2008. Arquivado em PHP. Você pode seguir as respostas a esse artigo pelo RSS 2.0. Você pode deixar respostas para esse artigo

24 respostas a Envio de e-mail via SMTP autenticado usando PHP

  1. muito bom esse exemplo.

    eu estava tento problemas com a funcao mail original do php, q os servidores do hotmail estavam simplismente excluindo as mensagens…

    e isso resolveu meu problema ..

    abracos e sucesso Marcelo

  2. Acho que compreendi, mais infelizmente não consegui fazer rodar na pratica, não sei onde inserir esse codigo em meu formulário. Esse é o grande mau de quem é desginer, e quando chega o momento onde não tem como fugir da programação. :P

  3. Eu também tenho o mesmo problema da Andréia.
    Estou tentando estudar php mas est’á difícil
    as vazes não funciona.

  4. è legal o tutorial mas to com o mesmo problema do André e da Lucia xD
    eu intendi legal e num sei onde coloca os codigos.
    To começando com programação e pega um negocio desse logo de primeira faz qualquer um ficar louco já que o aprendizado e conhecimento que tenho do assunto foi adiquirido todo pela internet atraves de foruns.

  5. gostaria de entender mais o php
    tem algum livro para pessoas que nada sabe

  6. boenas
    estou tendo o msmo problema da Andreia, da LuciaPinto, do Thiago, do Claudio e do Cebola.
    perdi o pinto na segunda guerra =/

  7. show de bola muito bom mesmo ajudou e muito heheheheeheh

  8. bom.. muito bom o arigo… tava com problemas com a funçao mail do php… os form eram enviado, mas, o email mandava pra lixeira, com alguns dias excluia..

    agora resolvi.. boa… abraço a todos!!!!

  9. como validar apenas o e-mail do usuário?

  10. Obrigado pelo script

    valeu mesmo

  11. Gostei bem do tópico.
    mais tem como vc me informar o host do servidor SMTP do hotmail.
    obrigado.

  12. Não consigo baixar a o arquivo smtp.class.php

  13. gostaria de saber como um visitante preenche um comentario e ele aparece automatico na mesma pagina e possa ja ser lido apos o visitante envie o comentario
    at. Alexandre Dutra

  14. Cara muito bom… mas tenho uma dúvida.
    Preciso enviar uma cópia para outro e-mail… tentei tudo já e não consigo. Pode me ajudar?

  15. Marcelo eu poderia me autenticar por exemplo com uma conta teste@teste.com.br e o meu from ser de uma conta teste1@hotmail.com ou eu teria o risco de os provedores entender meus emails como spam ? Desde já agradeço

  16. Muito obrigada pela exemplo que funciona!

  17. Valeu, funciona com o link da classe q está nos comentarios!

  18. Olá Marcelo vc poderia me enviar esta classe por email ?
    pois está off o link

  19. Caros, tenho percorrido o Google sobre formulário, estou precisando criar um formuário aonde terá vários campos, isso era possivel enquanto o smtp.eb.mil.br funcionava, agora estou usando um smtp que deve ser autenticado, até tudo bem, o exemplo assima funciona. Para adicionar mais campos e fazer com que estes campos sejam incluso no corpo do email? Já tentei de tudo, até exemplos na web em que o autor diz que é possivel fazer, ensina, mas não funciona. Ja tentei criar outra variavel do $Body, mas nada adiantou.

  20. Hoje tive essa mensagem do suporte do servidor que hospedo meu site:
    “O sistema do Google esta bloqueando o envio dos emails através da função mail do servidor, pois esta função envia os emails com o remetente o servidor e o mesmo não esta aceitando. Neste caso recomendo que altere os formulário para a função SMTP do PHP onde realizaria a autenticação no servidor de email do google para enviar os dados do formulário.”
    Utilizo o serviço do Google APPS, alguém sabe como resolver?

  21. Esta classe ainda existe? Está dando erro para fazer download!

    Abraço!

  22. Cara estou precisando anexar um arquivo na hora de enviar o email, pesquisei na net e só encontrei coo fazer isso com a funcao mail. tentei coloca-la com essa classe que vc passou e nao estou conseguindo, vc saberia me ajudar?

  23. Boa tarde!

    Pode postar o link para a classe novamente?

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>