【问题标题】:Sending Email after insertion of data using codeigniter php使用codeigniter php插入数据后发送电子邮件
【发布时间】:2017-03-08 18:12:27
【问题描述】:

使用codeigniterPHP 将数据插入数据库后发送电子邮件不起作用。数据插入成功,但MAIL 功能不起作用,因为www.hostname.com 页面不起作用。谁能帮忙我这个。提前谢谢。这是我的代码。

控制器:

class Blog extends CI_Controller 
{
    function __construct() 
        { 
            parent::__construct();
            //here we will autoload the pagination library              
            $this->load->model('blogs_model');
            $this->load->library('email');
        }
        function addcomments()
    {
        $this->load->library('form_validation');
        $this->form_validation->set_error_delimiters('<br /><span class="error"> ','</span>');
        $this->form_validation->set_rules('first_name','First Name' , 'required');
        $this->form_validation->set_rules('email','Email');
        $this->form_validation->set_rules('location','Location');
        $this->form_validation->set_rules('description','Description');
        if($this->form_validation->run()== FALSE)   
        {   
        $data['mainpage']='blogs';
        $this->load->view('templates/template',$data);
        }
        else
        {

            //insert the user registration details into database
            $data=array(
                'blog_id'=>$this->input->post('bl_id'),
                'first_name'=>$this->input->post('first_name'),
                'email'=>$this->input->post('email'),
                'description'=>$this->input->post('description'),
                'location'=>$this->input->post('location')
                );
            // insert form data into database
            if ($this->blogs_model -> insertcomments($data))
            {
                // send email
                if ($this->blogs_model->send_mail($this->input->post('email')))
                {
                    // successfully sent mail
                    $this->flash->success('msg','<div class="alert alert-success text-center">You are Successfully Registered! Please confirm the mail sent to your Email-ID!!!</div>');
                    redirect("blog");
                }
                else
                {
                    // error
                    $this->flash->success('msg','<div class="alert alert-danger text-center">Oops! Error.  Please try again later!!!</div>');
                    redirect("blog");
                }
            }
            else
            {
                // error
                $this->flash->success('msg','<div class="alert alert-danger text-center">Oops! Error.  Please try again later!!!</div>');
                redirect('blog');
            }
        }
        }
}

型号:

function insertcomments($data)
{
    return $this->db->insert('comments', $data);
    //$this->db->insert('comments',$data);
    //return $this->input->post('bl_id');
}

function sendEmail($to_email)
{

    //configure email settings
    $config=Array(
    'protocol'=> 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com', //smtp host name
    'smtp_port' => '465', //smtp port number
    'smtp_user' => 'xxxx@gmail.com',
    'smtp_pass' => '************', //$from_email password
    'mailtype' =>'html',
    'charset' => 'iso-8859-1',
    'wordwrap' => TRUE
    );

    //send mail
    $this->load->library('email',$config);
    $this->email->from('xxxx@gmail.com', 'Admin');
    $this->email->to('yyy@gmail.com');
    $this->email->subject('Comments');
    $this->email->message('Testing');
    $this->email->set_newline("\r\n");
    return $this->email->send();
}

【问题讨论】:

  • 试试这个:if($this-&gt;email-&gt;send()) { echo "sent"; } else { echo $this-&gt;email-&gt;print_debugger(); } 将帮助你找到错误
  • @devpro 得到与 www.developer.domain.com 页面不工作相同的错误 www.developer.domain.com 当前无法处理此请求。 HTTP 错误 500
  • 我认为这是方法名称问题,您使用了错误的方法。

标签: php mysql codeigniter email


【解决方案1】:

您在控制器中使用错误的方法名称发送电子邮件:

$this->blogs_model->send_mail($this->input->post('email'))

正确的函数名称是sendEmail()

$this->blogs_model->sendEmail($this->input->post('email'))

【讨论】:

  • @user7047368: 很高兴帮助你
【解决方案2】:

检查您的代码:

您应该更改控制器中的函数“send_mail”,因为在模型中您使用了“sendEmail”。

换成你的控制器:

$this->blogs_model->sendEmail($this->input->post('email'))

【讨论】:

    【解决方案3】:

    我认为你的代码中的问题是这一行 smtp_host' =&gt; 'ssl://smtp.googlemail.com

    改用:smtp_host' =&gt; 'http://smtp.gmail.com

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-07
      • 1970-01-01
      • 2011-04-21
      • 2013-01-07
      • 2019-08-07
      相关资源
      最近更新 更多