Ir para conteúdo

POWERED BY:

Arquivado

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

srjosemi

[PROBLEMA] Envio de e-mail com a função Mail

Recommended Posts

Olá Pessoal,

 

Estou tentando enviar um Link de recuperação de senha por e-mail. Porém, sem sucesso.

Não sei se o erro está no código para criar o link ou se o problema está na função mail.

 

Vocês podem me ajudar?

 

Código que estou utilizando abaixo:

<?php



 if( !empty($_POST) ){


    // processar o pedido
    $host = "xxxxx";
$user = "xxx";
$pass = "xxx";
$banco = "xxxx";
$conexao = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($banco) or die(mysql_error());
  ini_set('smtp_port', '587');


    $user = mysql_real_escape_string($_POST['email']);
    $q = mysql_query("SELECT * FROM usuarios WHERE email = '$user'");


    if( mysql_num_rows($q) == 1 ){
      // o utilizador existe, vamos gerar um link único e enviá-lo para o e-mail


      // gerar a chave
      // exemplo adaptado de http://snipplr.com/view/20236/
      $chave = sha1(uniqid( mt_rand(), true));


      // guardar este par de valores na tabela para confirmar mais tarde
      $conf = mysql_query("INSERT INTO recuperacao(utilizador, confirmacao) VALUES ('$user', '$chave')") or die(mysql_error());
 // echo "INSERT INTO recuperacao VALUES ('$user', '$chave')";


      if( mysql_affected_rows() == 1 ){


        $link = "http://consumerbook.com.br/teste/cadastro/recuperar.php?utilizador=$user&confirmacao=$chave";


$charset = "utf-8";
$email_remetente = 'recuperacao@consumerbook.com.br'; 
  $headers = "MIME-Version: 1.1\r\n";
$headers .= "Content-type: text/html; charset=".$charset."\r\n";
$headers .= "Reply-To: ".$email_remetente."\r\n";
$headers .= "Return-Path: recuperacao@consumerbook.com.br\r\n"; // return-path
$headers .= "From: recuperacao@consumerbook.com.br\r\n";


$msg = "<p>Olá '.$user.'. Recebemos uma tentativa de recuperação de senha para este e-mail. Para redefinir sua senha, clique no link abaixo. <br/>'.$link'";
        
if(mail($user, "Consumerbook 2016 - Recuperação de Senha", $msg, $headers)){
echo"<script>alert(\"Enviamos um link de recuperação de senha para o e-mail informado.\")</script>";
echo "<script>window.location = \"http://consumerbook.com.br/teste/web/2016/\"</script>"; 


} else {
echo"<script>alert(\"Houve um erro ao enviar o e-mail. Por favor, tente novamente.\")</script>";
echo "<script>window.location = \"http://consumerbook.com.br/teste/web/2016/\"</script>";
}}}}
  ?>
  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, posso estar enganado e não pesquisei também, mas com a função mail() tu não consegue enviar email autenticado, te aconselho a usar o PHPMailer, com ele tu pode quase tudo...hehehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia, posso estar enganado e não pesquisei também, mas com a função mail() tu não consegue enviar email autenticado, te aconselho a usar o PHPMailer, com ele tu pode quase tudo...hehehe

Como havia falado anteriormente, a função mail não envia autenticado, usa a classe PHPMailer, super simples de mexer brother

 

Esse mail vai cair muito fácil em outras

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Pessoal,

Tentei usar o envio pelo PHPMailer. Mas também sem sucesso :(

Estou usando esse código abaixo:

<?php
 
 if( !empty($_POST) ){
 
    // processar o pedido
    $host = "cadastro-2016.mysql.uhserver.com";
$user = "consumerbo2016";
$pass = "xxx;
$banco = "xxxx";
$conexao = mysql_connect($host, $user, $pass) or die(mysql_error());
mysql_select_db($banco) or die(mysql_error());
 
    $user = mysql_real_escape_string($_POST['email']);
    $q = mysql_query("SELECT * FROM usuarios WHERE email = '$user'");
 
    if( mysql_num_rows($q) == 1 ){
      // o utilizador existe, vamos gerar um link único e enviá-lo para o e-mail
 
      // gerar a chave
      // exemplo adaptado de http://snipplr.com/view/20236/
      $chave = sha1(uniqid( mt_rand(), true));
 
      // guardar este par de valores na tabela para confirmar mais tarde
      $conf = mysql_query("INSERT INTO recuperacao(utilizador, confirmacao) VALUES ('$user', '$chave')") or die(mysql_error());
 // echo "INSERT INTO recuperacao VALUES ('$user', '$chave')";
 
      if( mysql_affected_rows() == 1 ){
 
        $link = "http://consumerbook.com.br/teste/cadastro/recuperar.php?utilizador=$user&confirmacao=$chave";
$assunto = 'Consumerbook 2016 - Recuperação de Senha';
 
/*** INÍCIO - DADOS A SEREM ALTERADOS DE ACORDO COM SUAS CObFIGURAÇÕES DE E-MAIL ***/
 
$caixaPostalServidorNome = 'Consumerbook 2016';
$caixaPostalServidorEmail = 'recuperacao@consumerbook.com.br';
$caixaPostalServidorSenha = 'xxxxx';
 
$msg = "<p>Olá '.$user.'. Recebemos uma tentativa de recuperação de senha para este e-mail. Para redefinir sua senha, clique no link abaixo. <br/>'.$link'";
 
/*********************************** A PARTIR DAQUI NAO ALTERAR ************************************/ 
 
require_once('PHPMailerAutoload.php');
 
$mail = new PHPMailer();
 
$mail->IsSMTP();
$mail->SMTPAuth  = true;
$mail->Charset   = 'utf8_decode()';
$mail->Host  = 'smtp.consumerbook.com.br';
$mail->Port  = '587';
$mail->SMTPSecure = 'tls';  
$mail->Username  = $caixaPostalServidorEmail;
$mail->Password  = $caixaPostalServidorSenha;
$mail->AddReplyTo($caixaPostalServidorEmail);
$mail->setFrom ("recuperacao@consumerbook.com.br");
$mail->IsHTML(true);
$mail->Subject  = utf8_decode($assunto);
$mail->Body  = utf8_decode($msg);
$mail->AddAddress($user);  
 
 
if(!$mail->Send()){

echo"<script>alert(\"Houve um erro ao enviar o e-mail. Por favor, tente novamente.\")</script>";
echo "<script>window.location = \"http://consumerbook.com.br/teste/web/2016/\"</script>";

 
} else {
echo"<script>alert(\"Enviamos um link de recuperação de senha para o e-mail informado.\")</script>";
echo "<script>window.location = \"http://consumerbook.com.br/teste/web/2016/\"</script>";
 
}}}}
  ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse é o erro que aparece quando clico em enviar:

 

2016-07-02 20:39:07 SERVER -> CLIENT: 220 a2-semente2.whservidor.com ESMTP 2016-07-02 20:39:07 CLIENT -> SERVER: EHLO consumerbook.com.br 2016-07-02 20:39:07 SERVER -> CLIENT: 250-a2-semente2.whservidor.com 250-PIPELINING 250-SIZE 26214400 250-VRFY 250-ETRN 250-AUTH LOGIN PLAIN LOGIN PLAIN 250-AUTH=LOGIN PLAIN LOGIN PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN 2016-07-02 20:39:07 CLIENT -> SERVER: STARTTLS 2016-07-02 20:39:07 SERVER -> CLIENT: 502 5.5.1 Error: command not implemented 2016-07-02 20:39:07 SMTP ERROR: STARTTLS command failed: 502 5.5.1 Error: command not implemented 2016-07-02 20:39:07 SMTP Error: Could not connect to SMTP host. 2016-07-02 20:39:07 CLIENT -> SERVER: QUIT 2016-07-02 20:39:07 SERVER -> CLIENT: 221 2.0.0 Bye 2016-07-02 20:39:07 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Informações do erro: SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola, parece que não esta conectando...

tenta alterar isto:

$mail->SMTPSecure = 'tls';

por

$mail->SMTPSecure = 'ssl';

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.