CodeIgniter在发送电子邮件时会生成错误

时间:2015-07-13 16:24:54

标签: php codeigniter email

我在使用codeigniter发送电子邮件但是我一直收到错误

  

无法使用PHP mail()发送电子邮件。您的服务器可能不是   配置为使用此方法发送邮件。

        $this->email->from("kariuki.john@gmail.com", "Name");
        $this->email->to('johnkariukin@gmail.com');
        $this->email->cc('contact@johnkariuki.co.ke');
        $this->email->subject("New Email from on johnkariuki.co.ke");
        $this->email->message("abdfdfj\nfdgdfgdf");

        if($this->email->send())
        {
            echo "works";

        } else {

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

可能是什么问题?我无法在网上找到有效的解决方案。 可能是什么问题?我无法在网上找到有效的解决方案。 我已经在构造函数

中加载了电子邮件库

3 个答案:

答案 0 :(得分:0)

默认情况下,您的电子邮件协议设置为' mail',但您可能需要switch it to 'sendmail'

$config['protocol'] = 'sendmail';
$this->email->initialize($config);

这将要求您在服务器上安装sendmail(如果您使用的是Ubuntu,请sudo apt-get install sendmail)。

$this->email->send()使用PHP的内置mail()功能,根据this post,即使您的协议未明确设置为{{3}},它也可能已尝试使用sendmail ' sendmail的'

答案 1 :(得分:0)

PHP mail函数需要邮件服务器才能工作,如果运行Web应用程序的系统没有设置和配置,那么您将收到此错误。幸运的是,您可以通过使用SMTP更改默认协议以使用免费邮件服务器(如gmail)。查看CodeIgniter's email class文档,看看您是否可以设置与电子邮件主机的SMTP连接。

以下是我如何设置本地邮件发送的示例:

private function mail($to, $subject, $message){
    $this->load->library('email');
    if(!IN_PRODUCTION){ //Defined in the environment switch in index.php
        $this->email->initialize(
            array(
                'protocol' => 'smtp',
                'smtp_host' => 'ssl://smtp.gmail.com',
                'smtp_user' => '******@gmail.com',
                'smtp_pass' => '******',
                'smtp_port' => 465,
                'smtp_timeout' => 7,
                'mailtype' => 'html',
                'crlf' => "\r\n",
                'newline' => "\r\n",
                'validation' => TRUE
            )
        );
    }
    $this->email->from('******@gmail.com', 'iam-decoder');
    $this->email->to($to);
    $this->email->subject($subject);
    $this->email->message($message);
    return $this->email->send();
}

答案 2 :(得分:0)

发送邮件之前配置这些

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => 465,
    'smtp_user' => 'xxx',
    'smtp_pass' => 'xxx',
    'mailtype'  => 'html', 
    'charset'   => 'iso-8859-1'
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");

// Set to, from, message, etc.

$result = $this->email->send();

然后添加其余邮件

$this->email->from("kariuki.john@gmail.com", "Name");
$this->email->to('johnkariukin@gmail.com');
$this->email->cc('contact@johnkariuki.co.ke');
$this->email->subject("New Email from on johnkariuki.co.ke");
$this->email->message("abdfdfj\nfdgdfgdf");

if($this->email->send())
   {
     echo "works";

   } else {

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

详细了解Codeigniter E-Mail Helper class