Jump to content
RedHot66

Enviar email no PHP usando PHPMailer

Recommended Posts

Pessoal, não estou conseguindo enviar email no PHPMailer...
Ele me retorna esse erro quando uso o debug: 
 

2017-03-06 13:42:45 SMTP ERROR: Failed to connect to server: php_network_getaddresses: getaddrinfo failed: Name or service not known (0) 2017-03-06 13:42:45 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Não foi possível enviar o e-mail.Informações do erro: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Já conferi na wiki deles e não consegui resolver..
Uso o Ubuntu 14.04 LTS c/ PHP 7.0 (openssl está ativada)

 

Código que estou utilizando para enviar email  (Fonte: http://blog.thiagobelem.net/enviar-e-mails-pelo-php-usando-o-phpmailer): 
 

<?php

// Inclui o arquivo class.phpmailer.php localizado na pasta phpmailer
require_once("PHPMailer/PHPMailerAutoload.php");

// Inicia a classe PHPMailer

$mail = new PHPMailer();

// Define os dados do servidor e tipo de conexão

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

$mail->IsSMTP(); // Define que a mensagem será SMTP

$mail->Host = "smtp.dominio.net"; // Endereço do servidor SMTP

$mail->SMTPAuth = true; // Usa autenticação SMTP? (opcional)

$mail->Username = 'seumail@dominio.net'; // Usuário do servidor SMTP

$mail->Password = 'senha'; // Senha do servidor SMTP


// Define o remetente

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

$mail->From = "seumail@dominio.net"; // Seu e-mail

$mail->FromName = "Joãozinho"; // Seu nome



// Define os destinatário(s)

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

$mail->AddAddress('fulano@dominio.com.br', 'Fulano da Silva');

$mail->AddAddress('ciclano@site.net');


$mail->IsHTML(true); // Define que o e-mail será enviado como HTML



// Define a mensagem (Texto e Assunto)

// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

$mail->Subject  = "Mensagem Teste"; // Assunto da mensagem

$mail->Body = "Este é o corpo da mensagem de teste, em <b>HTML</b>! :)";

$mail->AltBody = "Este é o corpo da mensagem de teste, em Texto Plano! \r\n :)";



// Envia o e-mail

$enviado = $mail->Send();


// Limpa os destinatários e os anexos

$mail->ClearAllRecipients();

$mail->ClearAttachments();



// Exibe uma mensagem de resultado

if ($enviado) {

echo "E-mail enviado com sucesso!";

} else {

echo "Não foi possível enviar o e-mail.";

echo "<b>Informações do erro:</b> " . $mail->ErrorInfo;

}

 

Share this post


Link to post
Share on other sites

Troquei e está tudo corretamente.

Só uma observação, testei o mesmo script com as mesmas informações em um servidor Windows com o Wamp e PHP 5.4, funcionou normalmente.. Mas nesse servidor que especifiquei (Ubuntu 14.04 LTS c/ PHP 7.0), continua o erro. =/

Edited by RedHot66

Share this post


Link to post
Share on other sites

Um chute... 

Da um ping pelo servidor linux (ssh?) no seu endereço que você informa no PHPMailer.

Aparentemente não está rolando comunicação ou algum problema de má configuração de DNS (sou prego em Servidor :( )

Share this post


Link to post
Share on other sites

Esse post do Thiago belem, que é de onde você extraiu esse codigo, é muito antigo. De lá para cá o PHPMailer teve algumas alterações.
De uma olhada em https://github.com/PHPMailer/PHPMailer
Tem um exemplo correto de como você deve usar o PHPMailer, nas versões atuais.

Dica, sempre que quiser saber/aprender algo, procure sempre pela documentação, no site oficial, pois sempre estará atualizado
Boa diversão!
 

  • +1 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Jefferson andre
      Saudações mestres,
       
      Como faço para ajustar o programa abaixo para calcular a diferença entre duas variaveis que armazenam horario no ajax quando ocorre um evento onblur?
       
      O programa funciona com numeros mas nao com tempo, depois que eu pegar a diferenca entre os horarios quero multiplicar por uma terceira variavel.
       
      <html> <body> <script> function calcular() { var num1 = Number(document.getElementById("hora_saida").value); var num2 = Number(document.getElementById("hora_entrega").value); var elemResult = document.getElementById("resultado"); if (elemResult.textContent === undefined) { elemResult.textContent = "O resultado eh " + String(num1 + num2) + "."; } else { // IE elemResult.innerText = "O resultado eh " + String(num1 + num2) + "."; } } </script> <label>Horario de saida</label> <input type ="time" name="hora_saida" id="hora_saida"onblur="calcular();"> <label>Horario da entrega</label> <input type ="time" name="hora_entrega" id="hora_entrega"onblur="calcular();"> <div id="resultado"></div> <span id="resultado"></span> </body> </html>  
    • By Gustavuh
      Boa tarde.
       
      Estou carregando os dados do usuário numa session.
       
      Na página de redirecionamento, jogo essa session para uma váriável.
       
      Quero por BEM VINDO, {nome_do_usuario}, mas aparece o erro UNDEFINED INDEX: USER_NAME.
       
      Segue codigo...
       
      if(!isset($_SESSION['userlogin'])){ unset($_SESSION['userlogin']); header("Location: index.php"); exit; }else{$userlogin = $_SESSION['userlogin'];} <img src="images/user.png" alt=""> <span> Bem vindo(a), <strong style="font-style: italic;"><?= $userlogin['user_apelido']; ?></strong></span> Como resolver esse caso tão simples?

    • By EstilloWeb
      Está ocorrendo um erro em meu comando MySQL na ordenação dos resultados. O código é o seguinte:
      $sql_imos4 = "Select DISTINCT imovel FROM propostas ORDER BY id DESC"; $exe_imos4 = mysqli_query($conexao, $sql_imos4); O objetivo é listar uma única vez um imóvel com proposta, mesmo que haja dois ou mais registros, sempre ordenado mais recente. O que está ocorrendo quando o imóvel tem mais de uma proposta cadastrada, a ordenação está sendo feita pelo ID da proposta mais antiga.
      Exemplo:
      imóvel ref. 4528 tem duas propostas, sendo que a mais recente tem o ID 235 porém aparece na listagem abaixo do imóvel ref. 4325, que tem uma só proposta e ID 230.
      O resultado deveria estar invertido neste caso.
      Onde pode estar o erro? Agradeço a ajuda.
    • By tii3030
      Olá, gostaria de saber qual a melhor maneira de selecionar e verificar a senha hash(senha) em um banco de dados e comparar com a senha inserida pelo usuário em um formulário de login. É mais adequado armazenar no BD o salt ? No exemplo abaixo eu criei o hash da senha antes de selecionar no banco:
      <?php include('conf.php'); $email = 'lala@123.com'; $senha = 'lala.123'; $custo = '08'; $salt = 'Cf1f11ePArKlBJomM0F6aJ'; $hash = crypt($senha, '$2a$' . $custo . '$' . $salt . '$'); $query_select = "SELECT email, password FROM usuarios WHERE email = '$email' AND password = '$hash'"; $select = mysqli_query($conexao,$query_select); if (mysqli_num_rows($select) == 1) { echo "Login Permitido"; } else { echo "Login ou senha invalidos"; } ?> Já neste exemplo eu selecionei o hash no banco para depois comparar com a senha inserida no formulário utilizando o password_verify():
      <?php #----------------- INCLUDING FILE --> "conf.php" include('conf.php'); if (isset($_POST['submit'])) { $email = mysqli_real_escape_string($conexao, $_POST['email']); $password = mysqli_real_escape_string($conexao, $_POST['password']); $query_select_email = "SELECT email FROM usuarios WHERE email = '$email'"; $select_email = mysqli_query($conexao,$query_select_email); $query_select_password = "SELECT password FROM usuarios"; $select_password = mysqli_query($conexao,$query_select_password); while($array = mysqli_fetch_array($select_password)) { $logarray = $array['password']; if (password_verify($password, $logarray) && mysqli_num_rows($select_email) == 1) { echo "Login permitido"; } } } ?> Aceito qualquer dica relacionado a segurança e para melhorar o código, desde já agradeço.
    • By tii3030
      Olá pessoal, desenvolvi um pequeno código em PHP com a função de verificar e validar usuário e senha de um formulário, juntamente com o meu banco de dados MySql.
      Gostaria de saber como aprimorar o meu código para torna-lo mais seguro e mais próximo de algo "profissional". Lembrando que minha senha no banco está criptografada (PASSWORD_BCRYPT).
       
      <?php
          #----------------- INCLUDING FILE --> "conf.php"
          include('conf.php');
              if (isset($_POST['submit'])) {
             
      #--------------------------------INPUTS ---------------------------------------------#
                  $email = mysqli_real_escape_string($conexao, $_POST['email']);
                  $password = mysqli_real_escape_string($conexao, $_POST['password']);
      #-----------------------#----------------------#-----------------_#-------------------#
                  $query_select_email = "SELECT email FROM usuarios WHERE email = '$email'";
                  $select_email = mysqli_query($conexao,$query_select_email);
                  $query_select_password = "SELECT password FROM usuarios";
                  $select_password = mysqli_query($conexao,$query_select_password);
                  while($array = mysqli_fetch_array($select_password)) {
                  $logarray = $array['password'];
                  
                      if (password_verify($password, $logarray)) {
                          if (mysqli_num_rows($select_email) == 1) {
                              
                          $_SESSION['email'] = $email;
                          header('location: XXX.html');
                          exit();
                          }
                      }
                      else {
                          echo "Loguin ou senha incorretos";
                      }
                  $logarray = '0';
                  }
              }
      ?>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.