2014-10-30 4 views
0

Кто-нибудь может мне помочь, как отправить электронное письмо пользователю сразу после регистрации пользователя. Я новичок в codeigniter. Я хочу отправить электронное письмо сразу после отправки регистрационной формы.отправка электронной почты зарегистрированным пользователям в codeigniter

это мой контроллер:

<?php 

    class Registration extends CI_Controller { 

     public function index() 
     { 
      parent::__construct(); 
      $this->load->view('registration_view'); 
     } 
    public function userReg() { 

      if(extract($_POST)){ 
       //Validation of login form 
       $this->form_validation->set_rules('reg_fname', 'First Name', 'required'); 
       $this->form_validation->set_rules('reg_lname', 'Last Name', 'required'); 
       $this->form_validation->set_rules('reg_email', 'Email', 'required|valid_email|is_unique[fw_registeration.reg_email]'); 
       $this->form_validation->set_rules('reg_pass', 'Password', 'required|matches[reg_conpass]|min_length[6]|max_length[12]'); 
       $this->form_validation->set_rules('reg_conpass', 'ConfirmPassword', 'required'); 


       if($this->form_validation->run() == FALSE){ 
        $data['reg_fname'] = $reg_fname; 
        $data['reg_lname'] = $reg_lname; 
        $data['reg_email'] = $reg_email; 
        $data['reg_pass'] = $reg_pass; 
        $data['reg_conpass'] = $reg_conpass; 

        $this->load->view('registration_view', $data); 
       }else{ 
        //checking username and password from db 
        $this->load->model('reg_model'); 
        //$login_status = $this->form_model->userLogin($user_login_name, $user_login_password); 
        //registeration status 
        $reg_status = $this->reg_model->userReg($reg_fname, $reg_lname, $reg_email, $reg_pass, $reg_conpass); 
        if($reg_status == true){ 

         $data['reg_status'] = "Welcome, you logged in.";  
        // $this->load->view('login', $data); 
        }else{ 
         $data['reg_status'] = "Login Failed. Please Try Again..."; 
         //$this->load->view('loginsuccess', $data); 
        } 
       } 
      } 
         else{ 
       $this->load->view('registration_view'); 
         } 
        } 
    } 
    ?> 

это моя модель:

<?php 
class Reg_model extends CI_Model { 
    public function userReg($reg_fname, $reg_lname, $reg_email, $reg_pass, $reg_conpass) { 
     $sql = "INSERT INTO fw_registeration (reg_fname, reg_lname, reg_email, reg_pass, reg_conpass) VALUES (".$this->db->escape($reg_fname).", ".$this->db->escape($reg_lname).", ".$this->db->escape($reg_email).", ".$this->db->escape($reg_pass).", ".$this->db->escape($reg_conpass).")"; 

     //echo $this->db->affected_rows(); 
     if ($result = $this->db->query($sql, array($reg_fname, $reg_lname, $reg_email, $reg_pass, $reg_conpass))); 
     { 
      //echo base_url(); 
      // $this->load->view('home'); 
      $this->load->view('index_new'); 
     } 
    } 
} 
?> 

Thanx за любую помощь

ответ

2

$ CI = & get_instance(); $ CI-> load-> library ('email');

$config['protocol'] = 'smtp'; 
    $config['smtp_host'] = 'mail.******.com'; 
    $config['smtp_timeout'] = '7'; 
    $config['smtp_user'] = '[email protected]'; 
    $config['smtp_pass'] = '*******'; 
    $config['charset'] = 'utf-8'; 
    $config['newline'] = "\r\n"; 
    $config['mailtype'] = 'html'; // or html 
    $config['validation'] = TRUE; // bool whether to validate email or not 

    $CI->email->initialize($config); 

    $CI->email->from('[email protected]', 'Test'); 
    $CI->email->to('[email protected]'); 
    $CI->email->cc('[email protected]'); 
    $CI->email->bcc('[email protected]'); 
    // EXP. $CI->email->bcc('[email protected],[email protected]'); 
    $CI->email->subject('email subject'); 
    $CI->email->message('message body'); 
    $CI->email->send(); 
    //echo $this->email->print_debugger(); 
1

Вы бы использовать класс по электронной почте. https://ellislab.com/codeigniter/user-guide/libraries/email.html

Как только ваш пользователь находится в базе данных, вы можете отправить им электронное письмо, например:

if ($result) 
{ 
    $this->load->library('email'); 
    $this->email->from('[email protected]', 'Your Name'); 
    $this->email->to($reg_email); 

    $this->email->subject('Thanks for regstering'); 
    $this->email->message('Thank you, big lad!'); 

    $this->email->send(); 
} 
+0

thanx для ответа. , но отображается ошибка Сообщение: mail(): Не удалось подключиться к почтовому серверу в порту «localhost» 25, проверьте настройки «SMTP» и «smtp_port» в php.ini или используйте ini_set() – hash

+0

. для настройки параметров SMTP. Прочтите руководство пользователя, которое я разместил. – Craig

0

использовать приведенный ниже код будет работать .. для вас ... примечания это не будет работать, если вы отправляете электронную почту с локального хоста, если это так .. что вам нужно сделать настройки в вашем php.ini и Sendmail .ini файлы ..

if($reg_status == true){ 
    $this->load->library('email'); 
    $config_email['protocol'] = 'mail'; 
    $config_email['mailtype'] = 'html'; 
    $this->email->initialize($config_email); 

    $this->email->from('[email protected]', 'Your Domain'); 
    $this->email->to($reg_email); 
    $this->email->subject('We welcome you'); 
    $this->email->message("Thanks for registration"); 

    if ($this->email->send()) { 
     $data['reg_status'] = "Welcome, you logged in."; 
    } else { 
     $data['reg_status'] = "SOrry registration fail"; 
    } 

    //$this->load->view('login', $data); 
} 
+0

thanx для ответа, но отображается сообщение об ошибке Сообщение: mail(): Не удалось подключиться к почтовому серверу на порту «localhost» 25, проверьте настройки «SMTP» и «smtp_port» в php.ini или используйте ini_set() – hash

+0

, какой сервер вы используете, я имею в виду XAMPP или любое другое ... и дайте мне знать, откуда вы тестируете это, я имею в виду от вашего собственного машина localhost или с локального сервера localhost .. –

+0

Сэр я использую WAMP SERVER – hash