Error in Function mail() Windows Uol Host Platform. Returns 1 (True) but the email does not reach the recipient!

Asked

Viewed 76 times

0

I have two simple functions that trigger e-mail (Recover Password). One works perfectly, the other does not accuse error, but the email does not reach the recipient.
I would like a possible solution, I thank you all in advance!

FUNCTION 1 (I forgot the password) - It creates a new password randomly, encrypts and sends to the user’s email.

public function check_userlogin () {  
  if(isset($_POST['ResultadoConta']) 
                    && ( $_POST['ResultadoConta'] != null)
                    ){
                $email = $_POST['RecuperarEmail'];
                $resposta = $_POST['ResultadoConta'];
                if( $_POST['ResultadoConta'] == 0){
                    //consulta na BD se o email existe
                    $query = $this->db->query(
            'SELECT * FROM usu_usuarios WHERE usu_email = ? LIMIT 1',
                            array ($email)
        );
                    // Obtém os dados da base de usuário
        $fetch = $query->fetch(PDO::FETCH_ASSOC);

        // Obtém o ID do usuário
        $user_id = (int) $fetch['usu_id'];
                $user_status = (int) $fetch['usu_status'];

        // Se os dados estiverem nulos e o email não existir exibir a mensagem
        if ( empty( $user_id ) || $user_status == 0 ) {
                    $this->login_error = 'Usuário Não Encontrado.';
            return;
                }else{
                    //se existir o sistema atualiza a senha (randomicamente) na BD, dispara email com nova senha
                    $aleatorio = rand(6, 6); // 6 CARACTERES
                    $valor = substr(str_shuffle("AaBbCcDdEeFfGgHhIiJjKkLlMmNnPpQqRrSsTtUuVvYyXxWwZz0123456789@#$%&"), 0, $aleatorio);

                   $password_hash = new PasswordHash(8, FALSE);
        // Cria o hash da senha
        $password = $password_hash->HashPassword($valor);

                    //update na base de dados
                    $query = $this->db->query(
            'UPDATE usu_usuarios SET usu_senha=? WHERE usu_id=?;',
                            array ($password,$user_id)
        );

                    //disparando email
                    $from = "[email protected]";

                    $to = $email;

                    $subject = "SD Vale - Nova Senha ";

                    $message = "<p><b>RECUPERAÇÃO DE SENHA</b> <br /><br /><b>Nova senha:</b> ".$valor."</p>";
$headers  = 'MIME-Version: 1.0' . "\r\n";
      $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
                    $headers .= "De:". $from;


                    mail($to, $subject, $message, $headers);

                    $this->form_msg = 'A solicitação para recuperar a senha foi enviada. Não esqueça de olhar a caixa de LIXO ELETRÔNICO ou SPAM S.';
            return;

                } 
                }else{
                    $this->login_error = 'Resposta Incorreta, tente novamente!';
                }

            }
}


FUNCTION 2 (NOT WORKING) - The system retrieves an encrypted password, decodes and sends an email with the registered password.

public function Recuperar_Senha() {
            //recuperar senha
            if(isset($_POST['RecuperarResultado']) 
                    && ( $_POST['RecuperarResultado'] != null)
                    ){
                $email = $_POST['RecuperarEmail'];
                $resposta = $_POST['RecuperarResultado'];
                if( $_POST['RecuperarResultado'] == 0){
                    //consulta na BD se o email existe
                    $query = $this->db->query(
            'SELECT * FROM usu_usuarios WHERE usu_email = ? LIMIT 1',
                            array ($email)
        );
                    // Obtém os dados da base de usuário
        $fetch = $query->fetch(PDO::FETCH_ASSOC);

        // Obtém o ID do usuário
        $user_id = (int) $fetch['usu_id'];
                $user_status = (int) $fetch['usu_status'];
                $user_pass = base64_decode($fetch['usu_senha']);

        // Se os dados estiverem nulos e o email não existir exibir a mensagem
        if ( empty( $user_id ) || $user_status == 0 ) {
                    $this->login_error = 'Usuário não Encontrado.';
            return;
                }else{               
                    //disparando email

                    $from = "[email protected]";

                    $to = $email;

                    $subject = "SD Vale - Recuperar Senha ";

                    $message = "<p><b>RECUPERAÇÃO DE SENHA</b> <br /><br /><b>A sua senha é: </b> ".$user_pass."</p>";
$headers  = 'MIME-Version: 1.0' . "\r\n";
      $headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
                    $headers .= "De:". $from;

                    mail($to, $subject, $message, $headers);

                    $this->form_msg = 'A solicitação para recuperar a senha foi enviada. Não esqueça de olhar a caixa de LIXO ELETRÔNICO ou SPAM S.';
                    return;
                }

                }else{
                    $this->login_error = 'Resposta Incorreta, tente novamente!';
                }

            }
    }

Additional Information:
-I tried the 5th Parameter ("-r$email" or "-f$email") and nothing!
-I’m using the code that Uol Host itself suggests.

  • My experience with UOL is traumatic, it does not go to theirs. I suggest using a library like the Phpmailer

  • I’ll use it, see if I can reverse the situation!

  • https://stackoverflow.com/questions/3186725/how-can-i-get-the-error-message-for-the-mail-function

  • who works and who doesn’t work?

  • Hello Leo, it’s the second function!

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.