2017-06-21 94 views
0

我正在尝试进行注册,网站发送确认电子邮件并且用户输入此电子邮件并继续注册。但是,它不会向电子邮件发送任何内容。我错在哪里?CodeIgniter在注册过程中不会向用户发送电子邮件

这里是我的Controller.php这样:

<?php 
class user extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     $this->load->helper(array('form','url', 'security')); 
     $this->load->library(array('session', 'form_validation', 'email')); 
     $this->load->database(); 
     $this->load->model('User_model'); 
    } 

    function index() 
    { 
     $this->register(); 
    } 

    function register() 
    { 
     //set validation rules 
     $this->form_validation->set_rules('username', 'Username', 'trim|required|alpha|min_length[3]|max_length[30]|is_unique[instructors.instructors_slug]xss_clean'); 
     $this->form_validation->set_rules('mail', 'Email', 'trim|required|valid_email|is_unique[instructors.mail]'); 
     $this->form_validation->set_rules('password', 'password', 'trim|required|md5'); 
     $this->form_validation->set_rules('password2', 'Confirm Password', 'trim|required|md5|matches[password]'); 

     $data['courses'] = $this->Popular_courses_model->get_popular_courses(); 
     $data['news'] = $this->News_model->get_news(); 

     //validate form input 
     if ($this->form_validation->run() == FALSE) 
     { 
      // fails 


      $this->load->view('templates/header'); 
      $this->load->view('pages/index', $data); 
      $this->load->view('templates/footer'); 
     } 
     else 
     { 
      //insert the user registration details into database 
      $data = array(
       'instructors_slug' => $this->input->post('username'), 
       'mail' => $this->input->post('mail'), 
       'password' => $this->input->post('password') 
      ); 

      // insert form data into database 
      if ($this->User_model->insertUser($data)) 
      { 
       // send email 
       if ($this->User_model->sendEmail($this->input->post('mail'))) 
       { 
        // successfully sent mail 
        $this->session->set_flashdata('msg','<div class="alert alert-success text-center">You are Successfully Registered! Please confirm the mail sent to your Email-ID!!!</div>'); 
        redirect('user/register'); 
       } 
       else 
       { 
        // error 
        $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Oops! Error. Please try again later!!!</div>'); 
        redirect('user/register'); 
       } 
      } 
      else 
      { 
       // error 
       $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Oops! Error. Please try again later!!!</div>'); 
       redirect('user/register'); 
      } 
     } 
    } 

    function verify($hash=NULL) 
    { 
     if ($this->User_model->verifyEmailID($hash)) 
     { 
      $this->session->set_flashdata('verify_msg','<div class="alert alert-success text-center">Your Email Address is successfully verified! Please login to access your account!</div>'); 
      redirect('user/register'); 
     } 
     else 
     { 
      $this->session->set_flashdata('verify_msg','<div class="alert alert-danger text-center">Sorry! There is error verifying your Email Address!</div>'); 
      redirect('user/register'); 
     } 
    } 
} 
?> 

这里是我的模型:

<?php 
class user_model extends CI_Model 
{ 
    function __construct() 
    { 
     // Call the Model constructor 
     parent::__construct(); 
    } 

    //insert into user table 
    function insertUser($data) 
    { 
     return $this->db->insert('instructors', $data); 
    } 

    //send verification email to user's email id 
    function sendEmail($to_email) 
    { 
     $from_email = '[email protected]'; //change this to yours 
     $subject = 'Verify Your Email Address'; 
     $message = 'Dear User,<br /><br />Please click on the below activation link to verify your email address.<br /><br /> http://wtf.az/user/verify/' . md5($to_email) . '<br /><br /><br />Thanks<br />Mydomain Team'; 

     //configure email settings 
     $config['protocol'] = 'smtp'; 
     $config['smtp_host'] = 'cpanel.freehosting.com'; //smtp host name 
     $config['smtp_port'] = '465'; //smtp port number 
     $config['smtp_user'] = $from_email; 
     $config['smtp_pass'] = '*my password here*'; //$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); 

     //send mail 
     $this->email->from($from_email, 'WTF'); 
     $this->email->to($to_email); 
     $this->email->subject($subject); 
     $this->email->message($message); 
     return $this->email->send(); 
    } 

    //activate user account 
    function verifyEmailID($key) 
    { 
     $data = array('status' => 1); 
     $this->db->where('md5(mail)', $key); 
     return $this->db->update('instructors', $data); 
    } 
} 
?> 

这是我的观点:

<div class="modal-body"> 

        <div> 
        <?php echo $this->session->flashdata('msg'); ?> 
        </div> 
        <?php $attributes = array('class' => 'rex-forms', 'name' => 'registrationform'); ?> 
        <?= form_open_multipart('user/register', $attributes); ?> 
         <div class="form-group"> 
         <span class="text-danger"><?php echo form_error('username'); ?></span> 
         <input name="username" type="text" class="form-control" placeholder="Имя пользователя"> 
         </div> 
         <div class="form-group"> 
         <span class="text-danger"><?php echo form_error('mail'); ?></span> 
         <input name="mail" type="email" class="form-control" placeholder="Электронный адрес"> 
         </div> 
         <div class="form-group"> 
         <span class="text-danger"><?php echo form_error('password'); ?></span> 
         <input name="password" type="password" class="form-control" placeholder="Пароль"> 
         </div> 
         <div class="form-group"> 
         <input name="password2" type="password" class="form-control" placeholder="Повторный ввод пароля"> 
         </div>      
        </div> 
        <div class="modal-footer"> 
        <button type="submit" name="submitforreg" class="rex-bottom-medium rex-btn-icon"> 
         <span class="rex-btn-text">регистрация</span> 
         <span class="rex-btn-text-icon"><i class="fa fa-arrow-circle-o-right"></i></span> 
        </button> 
        </div> 
        </form> 
       </div> 
+0

哪些故障排除步骤,你表现如何?我们如何知道您的密码是否正确,或者您的服务器是否能够发送电子邮件?你用服务器的'sendmail'而不是'smtp'测试过吗? – Sparky

+0

您对'smtp_host'的值似乎不正确。 'cpanel.freehosting.com'? – Sparky

+0

$ config ['protocol'] ='smtp'; $ config ['smtp_host'] ='ssl://smtp.gmail.com'; // smtp主机名 $ config ['smtp_port'] ='587'; // smtp端口号 $ config ['smtp_user'] = $ from_email; $ config ['smtp_pass'] ='pass'; // $ from_email密码 $ config ['mailtype'] ='html'; $ config ['charset'] ='iso-8859-1'; $ config ['wordwrap'] = TRUE; $ config ['newline'] =“\ r \ n”; //使用双引号 $ this-> email-> initialize($ config); –

回答

0

不知道这是否是问题,但根据documentation,模型类名称必须以大写字母开头。

在模型中,尝试改变这一点:

class user_model extends CI_Model 

这样:

class User_model extends CI_Model 
相关问题