Php CodeIgniter:自定义电子邮件功能不工作

Php CodeIgniter:自定义电子邮件功能不工作,php,codeigniter,email,Php,Codeigniter,Email,我必须就各种活动发送电子邮件通知。与插入记录、更新记录、删除记录事件类似 工作代码: 这是我在控制器中使用的,它工作正常,没有问题 因为我必须在更多的控制器(事件)中重复这一点,所以我想做一个函数,让我的生活更轻松。所以我做的如下。但这根本不起作用,也不发送任何电子邮件 功能 function email_notification($subject, $message, $to = FALSE, $from = FALSE, $from_name = FALSE) { $to

我必须就各种活动发送电子邮件通知。与插入记录、更新记录、删除记录事件类似

工作代码: 这是我在控制器中使用的,它工作正常,没有问题

因为我必须在更多的控制器(事件)中重复这一点,所以我想做一个函数,让我的生活更轻松。所以我做的如下。但这根本不起作用,也不发送任何电子邮件

功能

function email_notification($subject, $message, $to = FALSE, $from = FALSE, $from_name = FALSE)
{
    $to        = isset($to) ? $to : get_user_data('email', 1);
    $from      = isset($from) ? $from : 'system@myemail.com';
    $from_name = isset($from_name) ? $from_name : get_config_option('site_name');

    $CI = get_instance();

    $CI->email->clear();
    $CI->email->from($from, $from_name);
    $CI->email->to($to);
    $CI->email->subject(get_config_option('site_name') . ' - ' . $subject);
    $CI->email->message($message);

    return TRUE; // also tried using return TRUE
}
用法

$email_hr       = $this->config->item('hr_email_templates');
$email_template = $this->config->item('employee_new_email');

$message = $this->load->view($email_hr . $email_template, $data, true);

email_notification($this->lang->line('employee_new_subject'), $message, get_user_data('email', 1));//get_user_data($field, $id)
上述功能不发送任何电子邮件,因此

if ($this->email->send()) {
    // do the stuffs
}

如果停止执行某些内容,并且没有电子邮件,则永远不会得到true查看您的代码,电子邮件不会在电子邮件通知功能中发送

function email_notification($subject, $message, $to = FALSE, $from = FALSE, $from_name = FALSE)
{
          $to        = isset($to) ? $to : get_user_data('email', 1);
          $from      = isset($from) ? $from : 'my@email.com';
          $from_name = isset($from_name) ? $from_name : get_config_option('site_name');

          $CI = get_instance();

          $CI->email->clear();
          $CI->email->from($from, $from_name);
          $CI->email->to($to);
          $CI->email->subject(get_config_option('site_name') . ' - ' . $subject);
          $CI->email->message($message);

          // SEND THE EMAIL....
          return $CI->email->send();
      }
编辑

这是一个工作功能,我用来发送电子邮件,但我使用它作为一个库,而不是一个助手

function send_email($subject, $message, $to = null, $from = null, $from_name = null)
{
      $this->load->library('email');

      $config = array( 
                'wordwrap' => false,
                'mailtype' => 'html',
                'crlf' => "\r\n",
                'newline' => "\r\n" 
      );

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

      if ( ! $from ) { $from = 'from@emailaddress.com'; }
      if ( ! $from_name ) { $from = 'from name'; }
      if ( ! $to ) { $from = 'myemail@address.com'; }

      $this->email->from($from);
      $this->email->subject($subject);
      $this->email->to($to);

      $this->email->message($message);

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

您是否在
助手
控制器
中创建了该函数?您使用了错误的方法调用该函数。我在helper中创建了它。哦,但是由于我默认加载电子邮件库,我需要加载库吗?您需要首先加载帮助程序(它不在您发布的
用法中
代码中)您是否将其保存在
autoload.php
?是的,帮助程序已经自动加载。电子邮件通知功能实际上并不发送电子邮件(查看您的代码)。“return($this->email->send())?true:false;“谢谢,但还没有发送…”。。。我真的不明白它是什么样子的事实上,我已经尝试过使用
$CI
而不是
$this
,你是否尝试过print_调试器函数,看看问题出在哪里?我刚刚试过,但它没有输出任何消息。
function send_email($subject, $message, $to = null, $from = null, $from_name = null)
{
      $this->load->library('email');

      $config = array( 
                'wordwrap' => false,
                'mailtype' => 'html',
                'crlf' => "\r\n",
                'newline' => "\r\n" 
      );

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

      if ( ! $from ) { $from = 'from@emailaddress.com'; }
      if ( ! $from_name ) { $from = 'from name'; }
      if ( ! $to ) { $from = 'myemail@address.com'; }

      $this->email->from($from);
      $this->email->subject($subject);
      $this->email->to($to);

      $this->email->message($message);

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