- Como Criar Um Site, Blog – WebMaster.pt - http://www.webmaster.pt -

Envio De Email Através De SMTP Com PHPMailer

Tweet [3]

Quem já sofreu com o recebimento de um vírus por email, sabe que o spam é um problema cada vez maior, que causa prejuízos frequentes às empresas. Os spammers sempre reagem a novos filtros e métodos de combate, o que torna necesário uma constante vigilância nos Servidores.

Aproveitando-se deste tipo de problema, várias empresas que trabalham com Internet estão montando Servidores próprios para que seus clientes comprem pacotes diferenciados de serviço para envio de mensagens em massa.

Claro, você já sabe que isso acontece, mas… e se você tiver a necessidade de enviar um “simples” email marketing a seus clientes? Terá de pagar para fazer isso? Na mensagem de hoje falaremos sobre uma alternativa que pode ser usada para facilitar suas atividades.

SMTP Com PHPMailer

Bloqueio Da Função Mail Do PHP

Hoje 90% dos programadores que precisam enviar informações por meio de seus formulários, utilizam a função “mail” do PHP (conforme exemplo a seguir).


mail("EMAIL QUE RECEBERÁ A MENSAGEM", "ASSUNTO", "MENSAGEM", "$header");

Para uso de Formulário, não há problema algum, pois os recursos usados são mínimos.

A maior dificuldade se dá quando você precisa enviar mensagens a seus clientes ou quando os Servidores bloqueiam a função “mail”!

Se você usa a função “mail” em seus sites e passa por isso, certamente você tem um problema, pois esse tipo de estratégia dos Servidores prejudicam seus serviços.

Hoje existem vários sistemas já prontos na Internet onde você pode usar para implementar suas soluções!

Veja abaixo e faça suas adaptações!

Como Usar O PHPMailer

Uma das soluções encontradas na Internet é o PHPMailer, entre várias outras soluções que tem recursos diversos para lhe ajudar no dia a dia.

Infelizmente, várias versões dão erro com facilidade e para evitar transtorno, criamos um exemplo prático de uso que você pode adaptar para sua conta de email.

Fique tranquilo. Agora você poderá resolver seu problema facilmente.

Veja esse formulário que preparamos; ele tem os campos pré-definidos, tudo certinho (conforme o exemplo 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">
<link type="text/css" rel="stylesheet" media="screen" href="estilo.css">
<script src="scripts/ajax.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function enviar_formulario()
{

  String.prototype.trim = function()   {  return this.replace(/^\s+|\s+$/g,""); }
  String.prototype.ltrim = function()  {  return this.replace(/^\s+/,""); }
  String.prototype.rtrim = function()  {  return this.replace(/\s+$/,""); }

  if( document.getElementById("empresa").value.trim() == '' ){
    document.getElementById("empresa").focus();
    alert( "Preencher campo Empresa !" );    
    return false
  }
  else if( document.getElementById("pessoa_contato").value.trim() == '' ){
    document.getElementById("pessoa_contato").focus();
    alert( "Preencher o campo Pessoa de Contato !" );
    return false
  }
  else if( document.getElementById("telefone").value.trim() == '' ){
    document.getElementById("telefone").focus();
    alert( "Preencher o campo DDD+Telefone !" );
    return false
  }
  else if( document.getElementById("email").value.trim() == '' ){
    document.getElementById("email").focus();
    alert( "Preencher o campo E-mail !" );
    return false
  }  
  else if( document.getElementById("email").value.trim() != '' ){
    
    var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
    var mail = document.getElementById("email").value;
    var valida_mail = 0;
    
    if(typeof(mail) == "string"){
      
      if(er.test(mail)){
        valida_mail = 1;
      }        
    
    } else if(typeof(mail) == "object"){
      if(er.test(mail.value)){
           valida_mail = 1;
      }
    }else{
        valida_mail = 0;
    }
    
    if( valida_mail == 0 ){
      document.getElementById("email").focus();
      alert( "Preencher o campo E-mail corretamente !" );
      return false
    }  
    else{

      if( document.getElementById("assunto").value == 0 ){
        document.getElementById("assunto").focus();
        alert( "Preencha o campo Assunto !" );
        return false
      }
    }
  }
}

</script>
<title>Contatos</title>
</head>
<body>
<div>
  <form action="formulario_envia.php" method="post"  name="contato" onsubmit="return enviar_formulario()">
    
    <!-- Inicio da Tabela -->
    <table width="700" border="0" align="center" background="imagens/background_formulario.png">
      <tr>
        <td colspan="4"><br>
          <div id="titulo">Preencha o Formulário de Contato</div>
          <br>
        </td>
      </tr>
      <tr>
        <td><label id="lb_empresa">Empresa:</label></td>
        <td><input name="empresa" type="text" id="empresa" maxlength="50"></td>
        <td><label>Pessoa de Contato:</label></td>
        <td><input name="pessoa_contato" type="text" id="pessoa_contato" maxlength="30">
        </td>
      </tr>
      <tr>
        <td><label>DDD+Telefone:</label></td>
        <td><input name="telefone" type="text" id="telefone" maxlength="15"></td>
        <td><label>Telefone Alternativo:</label></td>
        <td><input name="telefone_alternativo" type="text" id="telefone_alternativo" maxlength="15"></td>
      </tr>
      <tr>
        <td><label>Email:</label></td>
        <td><input id="email" name="email" type="text">
        </td>
        <td><label>Assunto:</label></td>
        <td><input name="assunto" type="text" id="assunto" maxlength="50">
        </td>
      </tr>
      <tr>
        <td><label>OBSERVAÇÕES:</label></td>
        <td colspan="3"><textarea name="observacao" rows="5"></textarea></td>
      </tr>
      <tr>
        <td colspan="4"><div align="right"><input type="image" src="imagens/bt_solicitacao.png" name="solicitacao" alt="Enviar" id="botao" />
          </div></td>
      </tr>
    </table>
  </form>
</div>
</body>
</html>

Veja que ele transfere seu conteúdo para o ficheiro “formulario_envia.php”. É nesse ficheiro que faremos as configurações!

Exemplo:



<?php
session_start();
setlocale(LC_CTYPE,"pt_BR");
function sendMail($para,$de,$mensagem,$assunto){
//DADOS SMTP
$smtp    = "empresasnainternet.com.br"; //      < ---- Alterar o smtp
$usuario = "teste@empresasnainternet.com.br"; //      < ---- Alterar o email
$senha   = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //      < ---- Alterar a senha
// NAO ALTERAR
require_once 'smtp/smtp.php';
$mail = new smtp;
$mail->Delivery('relay');
$mail->Relay($smtp, $usuario, $senha, 465, 'login', true);
$mail->TimeOut(10);
$mail->Priority('high');
$mail->From($de);
$mail->AddTo($para);
$mail->Html($mensagem);
  if($mail->Send($assunto)){

    //echo "MENSAGEM ENVIADA COM SUCESSO";
    $_SESSION['feedback'] = "MENSAGEM ENVIADA COM SUCESSO";
    header ("Location: index.php");
    //return true;
  }else {

    //echo "MENSAGEM FALHOU AO SER ENVIADA, TENTE MAIS TARDE";
    $_SESSION['feedback'] = "MENSAGEM FALHOU AO SER ENVIADA, TENTE MAIS TARDE";
    header ("Location: index.php");
    //return false;
  }
}

  // Recebe os valores mandado pelo formulario
  $empresa        = $_POST['empresa'];
  $pessoa_contato = $_POST['pessoa_contato'];
  $telefone       = $_POST['telefone'];
  $telefone_alternativo = $_POST['telefone_alternativo'];
  $email          = $_POST['email'];
  $assunto        = $_POST['assunto'];
  $observacao     = $_POST['observacao'];
  
// Variavel guarda todo o html com a informações que será o corpo do email
$corpo='
<html>
<head>
<title>Contato</title>
</head>
<body>
  <table width="700" border="1">
      <tr>
        <td><label id="lb_empresa">Empresa:</label></td>
        <td>'.$empresa.'</td>
        <td><label>Pessoa de Contato:</label></td>
        <td>'.$pessoa_contato.'</td>
      </tr>
      <tr>
        <td><label>DDD+Telefone:</label></td>
        <td>'.$telefone.'</td>
        <td><label>Telefone Alternativo:</label></td>
        <td>'.$telefone_alternativo.'</td>
      </tr>
      <tr>
        <td><label>Email:</label></td>
        <td>'.$email.'</td>
        <td><label>CEP:</label></td>
        <td>'.$assunto.'</td>
      </tr>
      <tr>
        <td><label>OBS:</label></td>
        <td colspan="3">'.$observacao.'</td>
      </tr>
    </table>
</body>
</html>';

// Chama a função para enviar o email.
// Ex: sendMail("Email que recebe","Email que envia","Corpo do email","Titulo do email");
sendMail($email,"atendimento@empresasnainternet.com.br",$corpo,'Formulário de Contato'); // < ---- Alterar os dados de envio do email

?>

Veja que em parte do trecho, disponibilizei a mensagem: “não alterar”. Mas essa mensagem é justamente para quem não conhece nada de configuração!

OBSERVAÇÕES:

No ficheiro acima,você pode ver que existem algumas linhas comentadas, correto?

Elas descrevem as configurações necessárias e explicam o que você pode fazer.

O trecho mais importante é onde aparece a informação a seguir:


$mail->Relay($smtp, $usuario, $senha, 465, 'login', true);

Veja que aparece o número 465, correto?

Esse é o número da Porta usada no Sistema!

Muitos administradores tem problemas, pois os Web Servers (principalmente Linux) vem com a Porta 25 bloqueada, impossibilitando qualquer envio.

No Linux essa será a porta usada e dificilmente dará problema.

Agora você pode fazer adaptações!

Bem… o ficheiro acima está em anexo e poderá ser melhorado de acordo com sua necessidade!

Observações

Existem alguns erros que podem ocorrer, por isso é bom alertar:

Bem… Espero que tenham entendido o script e usem em suas soluções.

Download do código usado neste tutorial: Envio De Email Com Autenticação Através Do PHPMailer [4]

Tweet [3]
Be Sociable, Share!
  • [5]
  • [6]
  • [7]
  • [8]
  • [9]