Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wellington09

Servidor bloqueando SMTP

Recommended Posts

Pessoal, estou com uma dificuldade que nem o suporte dos servidores esta conseguindo me ajudar.

 

Estou utilizando o phpmailer para fazer disparo de emails pelo formulário de contato.

 

Se eu utilizar o smtp do proprio dominio como por exemplo:

 

$PHPMailer->SMTPAuth = true;
$PHPMailer->SMTPSecure = 'tls';
$PHPMailer->Host = 'smtp.dominio.com.br';
$PHPMailer->Port = 587;
$PHPMailer->Username = "envia@dominio.com.br";
$PHPMailer->Password = "senha_envia";
Ele faz o disparo perfeitamente, porem se eu utilizar o smtp do HOTMAIL ou GMAIL ele bloqueia o disparo SMTP, dando o erro.

Não foi possível enviar o e-mail.
SMTP connect() failed.

$PHPMailer->SMTPAuth = true;
$PHPMailer->SMTPSecure = 'tls';
$PHPMailer->Host = 'smtp.live.com';
$PHPMailer->Port = 587;
$PHPMailer->Username = "meu_email@hotmail.com";
$PHPMailer->Password = "minha_senha";

Se eu fizer o teste no meu PC localhost, o codigo funciona perfeitamente ele faz o disparo sem nenhum problema, o problema esta só no servidor realmente, quando subo a aplicação para la, ela para de funcionar.
Ja testei em 4 servidores e em todos ele não dispara quando se utiliza HOTMAIL ou GMAIL, tem alguma configuração a mais que eu deva fazer para que seja desbloqueado o desparo SMTP para essas empresas ?
Lembrando que ja testei com as porta 25, 467 e 587.
E estou carregando o phpmailer assim agora:
require 'class.pop3.php';
require 'class.smtp.php';
require 'class.phpmailer.php'; // antes eu carrega só esta linha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo, sabe que comigo acontece a mesma coisa, dai tive que usar o mail() do php mesmo, só para perguntar, qual é o seu servidor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo, sabe que comigo acontece a mesma coisa, dai tive que usar o mail() do php mesmo, só para perguntar, qual é o seu servidor?

 

A função mail() do php não me da opção de colocar smtp, port e smtpsecure, onde você configurou essas opções para gmail e hotmail.. foi no php.ini ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não se altera nada, é apenas uma funcão do próprio php, abaixo segue um exemplo:

$para = strtolower($_POST['email_usuario']);
            $assunto = 'Obrigado por cadastrar sua receita.';
            $boundary = "XYZ-".date("dmYis")."-ZYX";
            $headers  = "From: nao_responda@recofran.com.br\n";
            $headers .= "Return-Path: nao_responda@recofran.com.br\n";
            $headers .= "Content-type: text/html; charset=utf-8\n"; // PARA MANDAR EMAIL EM HTML
            $corpoMSG = '<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" 
    integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
    <!-- Optional theme -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" 
    integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous">
<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" 
integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
  </head>  
  <body>
    <div class="section">
      <div class="container">
        <div class="row">
          <div class="col-md-12"><br><br>
            <img src="http://www.recofran.com.br/novo/imgs/logotipo.jpg" width="30%" class="center-block img-responsive">
          </div>
        </div>
      </div>
    </div>
    <div class="section">
      <div class="container">
        <div class="row">
          <div class="col-md-12">
            <div class="page-header">
              <h3>Caro '.ucwords($_POST['nome_usuario']).'.
              </h3>
            </div>
          </div>
        </div>
      </div>
    </div>
    <div class="section">
      <div class="container">
        <div class="row">
          <div class="col-md-12">
            <p class="lead text-justify">Obrigado por participar do nosso site. Sua receita será analisada pela
              Empresa e, após aprovação, será publicada. Você receberá um link onde poderá
              conferir sua participação. A Recofran agradece a sua colaboração, na certeza
              de que as mesas desta fronteira ganharam mais um pouco de harmonia e integração.</p>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>';

if (mail($para, $assunto, $corpoMSG, $headers)){
                echo '<script>alert("Verifique seu email, caso não esteja na caixa de entrada,\n verifique na pasta de SPAM")</script>';
                
                //MANDAR EMAIL PARA ADMIN AVISANDO QUE TEM RECEITA
                $para = 'cpd@recofran.com.br';
                $assunto = 'Receita cadastrada no site.';
                $boundary = "XYZ-".date("dmYis")."-ZYX";
                $headers  = "From: nao_responda@recofran.com.br\n";
                $headers .= "Content-type: text/html; charset=utf-8\n"; // PARA MANDAR EMAIL EM HTML
                $corpoMSG = 'Nova receita cadastrada no site, verifique no gestor de conteúdos';
                if (mail($para, $assunto, $corpoMSG, $headers)){
                    //echo "<script>$('#myModal').modal('show')</script>";
                }else{
                    echo '<script>alert("EMAIL PARA O ADM NÃO ENVIADO")</script>';
                }
            }else{
                echo '<script>alert("EMAIL NÃO ENVIADO")</script>';
            }

este é um exemplo que eu utilizo no nosso site.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É que no caso vc esta utilizando o email que esta hospedado no servidor, no caso o (recofran.com.br) para fazer o disparo, ai vai funcionar mesmo, agora se vc utilizar esta mesma função utilizando o HOTMAIL ou GMAIL o SMTP vai ser bloqueado.

 

Não estou me referindo a configuração do HOTMAIL ou GMAIL como e-mail remetente/destinatario, mas sim o email que faz o disparo, onde vc tem que configurar os seguintes dados.

 

HOST = smtp.live.com

PORT = 587

user = meu_email@hotmail.com

password = ****

 

 

entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está procurando o problema no lugar errado, segundo seu post inicial o seu código é totalmente funcional em localhost e dá problema no servidor de produção, logo o script não tem nada de errado, isto é alguma restrição do seu servidor (porta, firewall, etc...).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, sim eu compreendi talvez eu tenha me expressado errado, mas como eu disse la em cima.

O suporte não esta ajudando muito, eu gostaria de saber se a alguma forma , ou seja algum código que eu desconheça e que não deixe o SMTP ser bloqueado pela hospedagem.

 

Eu já sei que é a hospedagem que esta bloqueando o disparo, só queria saber se existe outra forma de fazer este disparo sem que o servidor bloqueie .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depende qual a restrição que o host está impondo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu configuro o host smtp + user + password do HOTMAIL ou GMAIL o servidor devolve o erro.

 

SMTP connect() failed.

 

Já utilizando o mesmo código no servidor(wampserver) local(localhost), ele funciona sem problema, faz o disparo sem nenhum erro.

 

No servidor só esta funcionando se eu configurar o smtp com os dados do domínio hospedado, mas preciso utilizar o disparo com HOTMAIL e GMAIL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, vou responde a sua pergunta, em programação não existe mágica, se o host está bloqueando no firewall por exemplo, esqueça, se for uma porta divergente, ai você terá que ter a boa vontade da empresa para resolver isto, as portas usadas no SMTP em geral estão liberadas, você já questionou quais as portas estão liberadas no seu servidor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

As portas são, 26, 25, 587, 465, e estou esperando a boa vontade deles para me ajudarem em relação a isso, acho que não vai ter jeito mesmo a não ser eles liberarem no servidor esta trava, com ctz não terei acesso a isso.

 

Mas de qualquer forma agradeço a ajuda de vcs, vlw mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.