如何在CodeIgniter中创建一个助手类来存储所有发送和接收在我的网站中的电子邮件。我需要用所有电子邮件函数拨打该课程
$this->load->library('myclass');
如果我打电话给此类,则此功能应将$存储到电子邮件的时间,正文和主题中(表1)。怎么可能?
创建一个带有" myemail"名称的库,并将其放置在应用程序/库中。
application/libraries/myemail.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class CI_Myemail
{
public function __construct()
{
$this->CI =& get_instance();
}
public function saveEmail($to,$body,$subject)
{
$this->CI->load->model("table_model");
$this->table_model->save(array("to"=>$to,"body"=>$body,"subject"=>$subject,"mail_sent_time"=>date("Y-m-d H:i:s")));
}
}
然后,您必须创建table_model并写入功能才能将数据保存到数据中。
在控制器中,您必须将此库加载为
$this->load->library('myemail');
在控制器中,您必须称为
$this->myemail->saveEmail($this->to,$body,$subject);// Here, $this->do is controller variable as you mentioned in comment
您可以通过拥有辅助功能发送电子邮件来轻松执行此操作。您需要在哪里发送该功能的电子邮件调用。在调用发送电子邮件的方法之前,该函数内部将数据保存到表。另外,您可以保存电子邮件而无需发送状态待处理,并通过Cronjob发送以改善用户体验。我在网站上也在做同样的事情。
我在下面使用的辅助功能。您可以根据需要调整它。从控制器调用时,数据阵列应具有所有详细信息。
function sendEmail($data, $immediate=FALSE) {
$subject = $data['subject'];
$to = $data['to'];
$viewName = $data['template'];
$CI = & get_instance();
$CI->config->load("thephpcode.com");
$from = $CI->config->item('Sender');
$fromName = $CI->config->item('SenderName');
$priority = $CI->config->item('Priority');
if (isset($data['from'])) {
$from = $data['from'];
$fromName = $data['fromName'];
}
if (isset($data['priority']))
$priority = $data['priority'];
$body = $CI->load->view($viewName, $data, TRUE);
if ($from == "") {
log_message('error', 'From value is not set in Email helper for sending email');
return;
}
$bcc = '';
if (isset($data['bcc'])) {
$bcc = $data['bcc'];
}
/*
$replyto ='';
if (isset($data['reply_to'])) {
$replyto = $data['reply_to'];
$replytoname = $data['reply_to_name'];
}
*/
$status = 'Pending';
if ($immediate)
{
$status = 'Sent';
}
$dbdata = array();
$dbdata['from'] = $from;
$dbdata['fromName'] = $fromName;
if (isset($data['reply_to'])) {
$dbdata['replyto'] = $data['reply_to'];
$dbdata['replytoname'] = $data['reply_to_name'];
}
$dbdata['to'] = $to;
$dbdata['subject'] = $subject;
$dbdata['body'] = $body;
$dbdata['bcc'] = $bcc;
$dbdata['status'] = $status;
$dbdata['priority'] = $priority;
$CI->load->model('email_model', 'email_model');
$CI->email_model->insert($dbdata, 'email_queue');
if (!$immediate)
{
return TRUE;
}
//Send the email
$CI->load->library('email');
$CI->email->initialize($CI->config->item('email_config'));
$CI->email->from($from, $fromName);
$CI->email->to($to);
if (isset($data['bcc']))
{
$CI->email->bcc($data['bcc']);
}
if (isset($data['reply_to']))
{
$CI->email->reply_to($data['reply_to'],$data['reply_to_name']);
}
$CI->email->subject($subject);
$CI->email->message($body);
$CI->email->send();
return;
}