srjosemi 0 Denunciar post Postado Julho 1, 2016 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
rpmarques 3 Denunciar post Postado Julho 1, 2016 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
gabrielfalieri 15 Denunciar post Postado Julho 1, 2016 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
srjosemi 0 Denunciar post Postado Julho 2, 2016 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
rpmarques 3 Denunciar post Postado Julho 2, 2016 Mas qual é o erro que ele te da? Compartilhar este post Link para o post Compartilhar em outros sites
srjosemi 0 Denunciar post Postado Julho 2, 2016 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
srjosemi 0 Denunciar post Postado Julho 5, 2016 Pessoal, Alguém tem ideia do que é esse erro? Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Julho 8, 2016 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