Eu tenho um sistema para recuperação de senha perdida, configurei um smtp do gmail, o email é enviado para o email informado no form. Só que estou tendo um problema: quando o email do usuário é do gmail o email chega certinho e quando o usuário clica no botão "Atualizar Meus Dados" é redirecionado para a página correta. Mas quando o email do usuário é do hotmail, o botão não faz nada, além das palavras que possuem acentuação não aparecem corretamente. No gmail tudo funciona conforme o planejado. O que pode ser?
Abaixo está o código:
<!DOCTYPE HTML>
<html lang="br" class="no-js">
<head>
<meta charset="utf-8">
<title>Sistema de Login e Senha Criptografados</title>
<link href="../style.css" rel="stylesheet" />
</head>
<body>
<div id="conteudo">
<h1>Sistema de login e senha criptografados - Verificando Informações</h1>
<div class="borda"></div>
<?php
include "conexao.php";
//Praticamente faço as mesmas validações que fizemos para o cadastrado do usuário no banco de dados.
//Recebendo os dados e tratando os mesmos para inserção no banco
$recebeEmail = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
$confereEmail = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_MAGIC_QUOTES);
//Nesse if, faço uma conferência em relação ao e-mail informado. Se não for informado nenhum, retorno a mensagem para que o usuário informe corretamente
if ($recebeEmail == NULL ) {
echo "<p>O endereço de e-mail precisa ser informado!";
echo "<p><a href='javascript:history.back();'>Voltar</a></p>";
return false;
}
//Aqui faço a segunda parte da verificação: vejo se no endereço de e-mail foi utilizado algum caractere especial
//Isso serve para evitar uma possível invasão sql no banco de dados, possibilitando assim a proteção e integridade dos dados
//Nesse caso, eu comparo os nomes. Se forem iguais, após passarem pelos filtros, eu inicio a criptografia. Se não forem, peço que volte à página anterior
else if ($recebeEmail != $confereEmail) {
echo "<p>Você informou o seguinte endereço de e-mail: <strong>$confereEmail</strong> .</p>";
echo "<p>Por favor, não utilize caracteres especiais (tais como aspas simples ou duplas e/ou barras!) no campo <strong>Informe o E-mail</strong>.</p>";
echo "<p><a href='javascript:history.back();'>Volte</a> para a página anterior e tente novamente! Obrigado!</p>";
return false;
}
/*
Agora vamos consultar no banco de dados para ver se existe realmente esse cadastro
Vamos verificar ambos os dados: E-mail e ainda se o campo "ATIVO" está setado como SIM
*/
else{
$consultaInformacoes = pg_query($dbconn, "SELECT * FROM usuarios.usuario WHERE email = '$recebeEmail' AND ativo = 'SIM'") or die (pg_last_error());
$verificaInformacoes = pg_num_rows($consultaInformacoes);
if ($verificaInformacoes == 1){
echo "<p>O e-mail informado (<strong><em>$confereEmail</em></strong>) consta de nossa base de dados.</p>
<p>Acesse sua caixa de entrada. Se a mensagem não for encontrada, verifique se não está na caixa de spam!</p>";
include('PHPMailer/PHPMailerAutoload.php');
$mail = new PHPMailer();
/* #########################
* # CONFIGURAÇÕES BÁSICAS #
* #########################
*/
$assunto = "..:: Recuperação de dados ArcGIS::..";
$mensagem = utf8_decode('
<hr />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Recuperação de Dados</title>
<style type="text/css">
<!--
.style1 {
font-family: "Trebuchet MS", Arial;
font-size: 16px;
color: #FFFFFF;
}
.style4 {
font-family: "Trebuchet MS", Arial;
font-size: 12px;
color: #333333;
font-weight: bold;
}
-->
</style></head>
<body>
<form method="post" action="http://seudominio.com.br/novo/senha/exclusivo/atualizaInformacoes.php">
<fieldset>
<legend>Recuperação de Dados de Acesso</legend>
<label for="informacao">Para recuperar seus dados, clique no botão "Atualizar Meus Dados"!</label>
<input type="hidden" name="confereEmail" value="'.$confereEmail.'" /><br />
<input type="submit" value="Atualizar Meus Dados" />
</fieldset>
</form>
</body>
</html>
<hr />');
$seu_email = 'seuemail@gmail.com';
$seu_nome = 'seunome';
$sua_senha = 'suasenha';
/* Se for do Gmail o servidor é: smtp.gmail.com */
$host_do_email = 'smtp.gmail.com';
/* Configura os destinatários (pra quem vai o email) */
$mail->AddAddress($recebeEmail);
// $mail->AddAddress('email@email.com');
// $mail->AddCC('email@email.com', 'Nome da pessoa'); // Copia
// $mail->AddBCC('email@email.com', 'Nome da pessoa'); // Cópia Oculta
/* ###########################
* # CONFIGURAÇÕES AVANÇADAS #
* ###########################
*/
/* Mostra o erros*/
$email->SMTPDebug = 2;
/* Define que é uma conexão SMTP */
$mail->IsSMTP();
/* Define o endereço do servidor de envio */
$mail->Host = $host_do_email;
/* Utilizar autenticação SMTP */
$mail->SMTPAuth = true;
/* Protocolo da conexão */
$mail->SMTPSecure = "tls";
/* Porta da conexão */
$mail->Port = "587";
/* Email ou usuário para autenticação */
$mail->Username = $seu_email;
/* Senha do usuário */
$mail->Password = $sua_senha;
/* Configura os dados do remetente do email */
$mail->From = $seu_email; // Seu e-mail
$mail->FromName = $seu_nome; // Seu nome
/* Configura a mensagem */
$mail->IsHTML(true); // Configura um e-mail em HTML
/*
* Se tiver problemas com acentos, modifique o charset
* para ISO-8859-1
*/
$mail->CharSet = 'UTF-8'; // Charset da mensagem (opcional)
/* Configura o texto e assunto */
$mail->Subject = $assunto; // Assunto da mensagem
$mail->Body = $mensagem; // A mensagem em HTML
$mail->AltBody = trim(strip_tags($mensagem)); // A mesma mensagem em texto puro
/* Configura o anexo a ser enviado (se tiver um) */
//$mail->AddAttachment("foto.jpg", "foto.jpg"); // Insere um anexo
/* Envia o email */
$email_enviado = $mail->Send();
/* Limpa tudo */
$mail->ClearAllRecipients();
$mail->ClearAttachments();
/* Mostra se o email foi enviado ou não */
if ($email_enviado) {
echo "Email enviado!";
} else {
echo "<p>Endereço de e-mail informado não consta em nossa base de dados. Por favor, <a href='javascript:history.back();'>volte</a> e tente novamente!</p>";
}
}
else {
//Se nenhuma das confirmações acima foram efetuadas, mais uma vez, retorno uma mensagem de erro ao usuário.
echo "<p>Endereço de e-mail informado não consta em nossa base de dados. Por favor, <a href='javascript:history.back();'>volte</a> e tente novamente!</p>";
}
}
?>
</div>
Pergunta
nicol store
Eu tenho um sistema para recuperação de senha perdida, configurei um smtp do gmail, o email é enviado para o email informado no form. Só que estou tendo um problema: quando o email do usuário é do gmail o email chega certinho e quando o usuário clica no botão "Atualizar Meus Dados" é redirecionado para a página correta. Mas quando o email do usuário é do hotmail, o botão não faz nada, além das palavras que possuem acentuação não aparecem corretamente. No gmail tudo funciona conforme o planejado. O que pode ser?
Abaixo está o código:
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.