如何在codeigniter中制作html表单来发送电子邮件


how to make html form to send email in codeigniter

我是codeigniter的新手,正在制作一个表单,将所有详细信息发送到邮件中。但我没有得到解决方案,我的表格也不起作用。这是我在视图中的视图文件

contact_us in view
<?php 
        $form=array('class'=>'contact-form default-form','id'=>'myform');
        echo form_open('success_form/success',$form);
        ?>
        <div class="row">
          <div class="col-md-12">
            <div class="preamble col-md-12">
              <h3>Get in touch</h3>
            </div>
          </div>
          <div class="col-md-6">
            <?php
            $name=array('placeholder'=>'Name','name'=>'name');
            echo form_input($name);
            ?>
          </div>
          <div class="col-md-6">
            <?php
            $company=array('placeholder'=>'company','name'=>'company');
            echo form_input($company);
            ?>
          </div>
          <div class="col-md-6">
            <?php
            $number=array('placeholder'=>'Phone Number','name'=>'number');
            echo form_input($number);
            ?>
          </div>
          <div class="col-md-6">
            <?php
            $email=array('placeholder'=>'Email','name'=>'email');
            echo form_input($email);
            ?>
          </div>
          <div class="col-md-6">
            <span class="arrival calendar">
            <?php
            $arrival=array('name'=>'arrival','placeholder'=>'Arrival','data-dateformat'=>'m/d/y');
            echo form_input($arrival);
            ?>
                <i class="fa fa-calendar"></i>
            </span>
          </div>
          <div class="col-md-6">
            <span class="departure calendar">
            <?php
            $departure=array('name'=>'departure','placeholder'=>'Departure','data-dateformat'=>'m/d/y');
            echo form_input($arrival);
            ?>
               <i class="fa fa-calendar"></i>
            </span>
          </div>
          <div class="col-md-12">
            <span class="select-box" title="hotel-type">
              <select name="person" data-placeholder="Number of People">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
                <option value="9">9</option>
                <option value="10">10</option>
                <option value="10+">10+</option>
              </select>
            </span>
          </div>
          <div class="col-md-12">
            <textarea placeholder="How we can help you"></textarea>
          </div>
          <div class="col-lg-md text-center">
            <button class="btn btn-transparent-white">Send Message</button>
          </div>
        </div>
      <?php echo form_close();?>

这是我的控制器文件控制器中的success_form

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Success_form extends CI_Controller{
    public function __construct() {
        parent::__construct();
        $this->load->library(array('session', 'form_validation', 'email'));
    }
    public function index(){
        // Set Validation Rule
        $this->form_validation->set_rules('name','Name','trim|required|xss_clean|callback_alpha_space_only','required');
        $this->form_validation->set_rules('company','Company','trim|required|xss_clean|callback_alpha_space_only');
        $this->form_validation->set_rules('number','Mobile Number','required|regex_match[/^[0-9]{10}$/]');
        $this->form_validation->set_rules('email', 'Emaid ID', 'trim|required|valid_email');
        $this->form_validation->set_rules('arrival','Arrival','trim|required|xss_clean');
        $this->form_validation->set_rules('departure','Departure','trim|required|xss_clean');
        $this->form_validation->set_rules('person','Number of Person','trim|required|xss_clean|numeric');

    //Run Validation on Form Input
    if($this->form_validation->run()==FALSE){
     // Validation fails
        $this->load->view('contact_us_view');
    }
    else{
        // get the form data
        $name=$this->input->post('name');
        $company=$this->input->post('company');
        $number=$this->input->post('number');
        $email=$this->input->post('email');
        $arrival=$this->input->post('arrival');
        $departure=$this->input->post('departure');
        $person=$this->input->post('person');
        //Set email id
        $to_email='aziz.khan@vklalco.com';
        //configure email settings
            $config['protocol'] = 'smtp';
            $config['smtp_host'] = 'ssl://smtp.gmail.com';
            $config['smtp_port'] = '465';
            $config['smtp_user'] = 'user@gmail.com';
            $config['smtp_pass'] = 'password';
            $config['mailtype'] = 'html';
            $config['charset'] = 'iso-8859-1';
            $config['wordwrap'] = TRUE;
            $config['newline'] = "'r'n"; //use double quotes
            //$this->load->library('email', $config);
            $this->email->initialize($config);
             //send mail
            $this->email->from($email, $name);
            $this->email->to('$to_email');
            $this->email->subject('testing mail');
            $this->email->message('content');
            if($this->email->send()){
                //mail sent
                 $this->session->set_flashdata('msg','<div class="alert alert-success text-center">Your mail has been sent successfully!</div>');
                redirect('success_form/index');
            }
            else
            {
                //error
                $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">There is error in sending mail! Please try again later</div>');
                redirect('success_form/index');
            }
    }
  }
   //custom validation function to accept only alphabets and space input
    function alpha_space_only($str)
    {
        if (!preg_match("/^[a-zA-Z ]+$/",$str))
        {
            $this->form_validation->set_message('alpha_space_only', 'The %s field must contain only alphabets and space');
            return FALSE;
        }
        else
        {
            return TRUE;
        }
    }
    function success(){
        $this->load->view('success_view');
    }
}

我试了很多,但没有得到答案。请帮我找到解决办法。。

在您的视图中,您正在向success_form控制器的成功操作提交表单。

echo form_open('success_form/success',$form);

在你的成功行动中,你再次加载相同的表格。

函数success(){$this->load->view('success_view');}

您已经在索引操作中编写了发送邮件逻辑,您需要在成功操作中调用该逻辑来发送电子邮件。

function success(){
        $this->index();
        $this->load->view('success_view');
    }

这可能对你有用。