如何创建代码签名类别以将所有电子邮件存储到表中



如何在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;
}

最新更新