Search code examples
javascriptphpcodeigniteremailion-auth

ion auth forgot password mail not received in mail account


In ion auth my forgot password mail sent successfully but not received in my email account... I have searched many tutorials but can't find any solution.

Please Help me to solve this.

my email config file

$config['email_config'] = array(
    'mailtype' => 'html',
    'protocol' => 'smtp',

    'smtp_host' => 'ssl://smtp.gmail.com',
    'smtp_port' => '465',
    'smtp_user' => '[email protected]',
    'smtp_pass' => 'k10@kevalam',

);
in ion_auth config

$config['use_ci_email'] = TRUE; // Send Email using the builtin CI email class, if false it will return the code and the identity

$config['email_config'] = 'file';

in ion_auth.php library

if ($this->email->send())
		{
             echo $this->email->print_debugger();
             $this->set_message('forgot_password_successful');
	   		return TRUE;
        }

display message :"email sent"

in my ion_auth.php controller

function forgot_password()
	{
            {
		   $this->form_validation->set_rules('email', $this->lang->line('forgot_password_username_identity_label'), 'required');
		}
		else
		{
		   $this->form_validation->set_rules('email', $this->lang->line('forgot_password_validation_email_label'), 'required|valid_email');
		}


		if ($this->form_validation->run() == false)
		{
			//setup the input
			$this->data['email'] = array('name' => 'email',
				'id' => 'email',
			);

			if ( $this->config->item('identity', 'ion_auth') == 'username' ){
				$this->data['identity_label'] = $this->lang->line('forgot_password_username_identity_label');
			}
			else
			{
				$this->data['identity_label'] = $this->lang->line('forgot_password_email_identity_label');
			}

			//set any errors and display the form
			$this->data['message'] = (validation_errors()) ? validation_errors() : $this->session->flashdata('message');
			$this->_render_page('auth/forgot_password', $this->data);
		}
		else
		{
			// get identity from username or email
			if ( $this->config->item('identity', 'ion_auth') == 'username' ){
				$identity = $this->ion_auth->where('username', strtolower($this->input->post('email')))->users()->row();
			}
			else
			{
				$identity = $this->ion_auth->where('email', strtolower($this->input->post('email')))->users()->row();
			}
	            	if(empty($identity)) {

	            		if($this->config->item('identity', 'ion_auth') == 'username')
		            	{
                                   $this->ion_auth->set_message('forgot_password_username_not_found');
		            	}
		            	else
		            	{
		            	   $this->ion_auth->set_message('forgot_password_email_not_found');
		            	}

		                $this->session->set_flashdata('message', $this->ion_auth->messages());
                		redirect("auth/forgot_password", 'refresh');
            		}

			//run the forgotten password method to email an activation code to the user
			$forgotten = $this->ion_auth->forgotten_password($identity->{$this->config->item('identity', 'ion_auth')});

			if ($forgotten)
			{
				//if there were no errors
				$this->session->set_flashdata('message', $this->ion_auth->messages());
				
                                redirect("auth/login", 'refresh'); //we should display a confirmation page here instead of the login page
			}
			else
			{
				$this->session->set_flashdata('message', $this->ion_auth->errors());
                                				
                        redirect("auth/forgot_password", 'refresh');
			}
		}
	}

What should i change.?

Your Help would Be Appreciated.

Thanks in Advance...


Solution

  • The best thing to do is just to create a test controller method that sends an email to work out the proper email settings.