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();
}