2017-10-06 6 views
0

Voici ma fonction principaleJe ne parviens pas à envoyer un courrier électronique dans codeigniter à l'aide du serveur local. Aide à résoudre ce problème

Le registre de l'utilisateur, mais avec succès ne reçoivent pas de courrier électronique.

public function register(){ 
     $this->load->view("Home/home_header"); 
     if(isset($_POST["user_register"])){ 
      $this->form_validation->set_rules('name', 'First Name', 'alpha|htmlspecialchars|trim|required'); 
      $this->form_validation->set_rules('username', 'Last Name', 'htmlspecialchars|trim|required'); 
      $this->form_validation->set_rules('email', 'Email', 'valid_email|trim|required'); 
      $this->form_validation->set_rules('confirm-mail', 'Confirm Email', 'valid_email|trim|required|matches[email]'); 
      $this->form_validation->set_rules('password', 'Password', 'required'); 
      $this->form_validation->set_rules('confirm-password', 'Confirm Password', 'required|matches[password]'); 
      $this->form_validation->set_rules('address', 'Address', 'htmlspecialchars|trim|required'); 
      $this->form_validation->set_rules('country', 'Country', 'required'); 
      $this->form_validation->set_rules('male-female', 'Gender', 'required'); 
      if($this->form_validation->run() == TRUE){ 
        $status  = 0; 
       $data = array(); 
        $data["first-name"] = $_POST["name"]; 
        $data["username"] = $_POST["username"]; 
        $data["mail"] = $_POST["email"]; 
        $data["confirm-mail"] = $_POST["confirm-mail"]; 
        $data["password"] = hash('md5',$_POST["password"]); 
        $data["confirm-password"] = hash('md5',$_POST["confirm-password"]); 
        $data["address"] = $_POST["address"]; 
        $data["country"] = $_POST["country"]; 
        $data["male-female"] = $_POST["male-female"]; 

        $data["status"] = $status; 

        $email = $_POST["email"]; 
        $saltid = md5($email); 


        if($this->db->insert("register",$data)){ 
         if($this->User_functions->sendmail($email,$saltid)){ 

          //echo 'Succesful'; 
         redirect(base_url().login); 
         }else{ 
          echo "Sorry !"; 
         } 
        } 
      } 
     } 
     $this->load->view("Home/user_registration"); 
     $this->load->view("Home/home_footer"); 
    } 

Et voici la fonction mail. J'obtiens l'email d'utilisateur de l'entrée et stocke l'enregistrement d'utilisateur à la base de données. Enregistrez les banques avec succès et redirigez la page vers la page de connexion. Mais l'utilisateur ne reçoit pas d'e-mail lors de l'inscription. Aidez-moi à résoudre ce problème.

function sendmail($email,$saltid){ 
    // configure the email setting 
     $config['protocol'] = 'smtp'; 
     $config['smtp_host'] = 'ssl://smtp.gmail.com'; //smtp host name 
     $config['smtp_port'] = '465'; //smtp port number 
     $config['smtp_user'] = '*******@gmail.com'; 
     $config['smtp_pass'] = '***********'; //$from_email password 
     $config['mailtype'] = 'html'; 
     //$config['charset'] = 'iso-8859-1'; 
     //$config['wordwrap'] = TRUE; 
     $config['newline'] = "\r\n"; //use double quotes 
     //$this->email->initialize($config); 
     $this->load->library('email', $config); 
     $url = base_url()."user/confirmation/".$saltid; 
     $this->email->from('[email protected]', 'GulfPro'); 
     $this->email->to($email); 
     $this->email->subject('Please Verify Your Email Address'); 
     $message = "<html><head><head></head><body><p>Hi,</p><p>Thanks for registration with DGaps.</p> 
     <p>Please click below link to verify your email.</p>".$url."<br/><p>Sincerely,</p><p>DGaps Team</p></body></html>"; 
     $this->email->message($message); 
     return $this->email->send(); 
    } 

Si j'ai utilisé un code erroné pour cela, mettez également ce code en surbrillance.

Merci Ammar Khaliq

+0

Avez-vous donné la permission dans gmail pour que l'application utilise le service? –

+2

Ne partagez pas vos mots de passe au public –

+0

Merci, Monsieur. Je ferai attention la prochaine fois. –

Répondre

0

J'ai utilisé cette méthode d'email.

public function sendmail($user_id, $email){ 
    require("plugins/mailer/PHPMailerAutoload.php"); 
    $mail = new PHPMailer; 
    $mail->SMTPOptions = array(
     'ssl' => array(
     'verify_peer' => false, 
     'verify_peer_name' => false, 
     'allow_self_signed' => true 
    ) 
    ); 
    //$mail->SMTPDebug = 2;         // Enable verbose debug output 
    $mail->isSMTP();          // Set mailer to use SMTP 
    $mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers 
    $mail->SMTPAuth = true;        // Enable SMTP authentication 
    $mail->Username = '[email protected]';     // SMTP username 
    $mail->Password = 'password';       // SMTP password 
    $mail->SMTPSecure = 'ssl';       // Enable TLS encryption, `ssl` also accepted 
    $mail->Port = 465;         // TCP port to connect to 
    //Recipients 
    $from = "[email protected]"; 
    $from_label = "ABC"; 
    $subject = "Please verify your email address."; 
    $url = base_url()."user/".$user_id."/".md5($user_id); 
    $message = "<p>Hi,</p><p>Thanks for registration with Portfolio Times.</p> 
     <p>Please click below link to verify your email.</p>".$url."<br/><p>Sincerely,</p><p>DGaps Team</p>"; 

    $mail->setFrom($from,$from_label); 
    $mail->addAddress($email); 
    $mail->isHTML(true);         
    $mail->Subject = $subject; 
    $mail->Body = $message; 
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 
    //$mail->SMTPDebug = 2; 
    if(!$mail->send()){ 
     echo 'Mailer Error: ' . $mail->ErrorInfo; 
    } else { 
     echo "<div class='alert alert-success pull-right' style='width:400px' align='center'>".'<a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>'."Email Sent Successfully...</div>"; 
     //return true; 
    } 
    } 
0

S'il vous plaît utiliser:

echo $this->email->print_debugger(); 

après $this->email->send(); par enlever return

Il vous montrera la raison pour laquelle vous n'êtes pas en mesure d'envoyer un e-mail

+0

Il n'y a aucune information. –

+0

Ensuite, vérifiez votre code, car $ this-> email-> print_debugger(); montre toujours une sortie. –

+1

J'ai une solution.Merci –