因此,我的任务是为我们的会员数据库创建一个功能,该功能将每月提醒某人他们的会员资格何时到期。如果一个人的会员资格到期时间不超过 6 个月,我们会发送一封电子邮件,如果他们的会员资格到期 3 个月,我们会发送另一封电子邮件。没有大喊大叫。我首先创建一个这样的模型:
class Email extends CI_Model {
function __construct()
{
parent::__construct();
}
// -----------------EMAIL-----------------
function emailMessage($message = 1,$recipient = 1777) { // Default "Test" Numbers
$rInfo = $this->db->query("SELECT * FROM Members WHERE intKey = " . $recipient)->row();
$eInfo = $this->db->query("SELECT * FROM Emails WHERE intKey = " . $message)->row();
// Replacements?
$bodyCopy = $eInfo->txtEmail;
$bodyCopy = str_replace("[firstname]",$rInfo->strFirstName,$bodyCopy);
$this->load->library('email');
$this->email->from('someone@example.com','John Q Public');
$this->email->to($rInfo->strEmail);
$this->email->subject($eInfo->strTitle);
$this->email->message($bodyCopy);
$this->email->send();
$this->email->clear();
}
}
一切都很好,当我从我建立的网站的任何其他部分调用这个模型时,它工作正常。这是处理必须发送给我们选区的任何股票电子邮件的好方法。通常,它在代码中是这样的:
$this->load->model('email');
$this->email->emailMessage(8,$this->session->userdata('memberKey'));
奇迹般有效。我以前使用它的地方和现在使用它的地方之间的最大区别是我将对模型的调用包含在一个循环中,如下所示:
public function warningEmails() {
$this->load->model('email');
$sql = 'SELECT
*, FLOOR(
DATEDIFF(dtAccreditationEnd, now())/ 30
)AS diff
FROM
tblMembers
WHERE
enmAccredited = "yes"
AND dtAccreditationEnd < DATE_ADD(now(), INTERVAL 6 MONTH)
ORDER BY
diff
';
$emailSend = $this->db->query($sql);
foreach ($emailSend->result() as $row) {
if ($row->diff <= 3) {
$letter = 10;
} else {
$letter = 9;
}
$this->email->emailMessage($letter,$row->intMembersKey);
}
}
它在第一次循环中运行良好,并且在循环的下一次迭代中失败并显示以下消息:
致命错误:在第1033行的/home/contract/public_html/members/application/controllers/staff.php中调用未定义的方法 CI_Email::emailMessage()
第 1033 行是这一行:
$this->email->emailMessage($letter,$row->intMembersKey);
我有一个问题,这个模型只能在给定的实例中调用一次?我究竟做错了什么?预先感谢您的协助!
编辑:我要添加一个 var_dump($this->email); 看看它可能是什么......
object(CI_Email)#30 (46) { ["useragent"]=> string(11) "CodeIgniter" ["mailpath"]=> string(18) "/usr/sbin/sendmail"
["protocol"]=>字符串(4)“邮件”[“smtp_host”]=>字符串(0)“
”[“smtp_user”]=>字符串(0)“”[“smtp_pass”]=>字符串(0)“”
[“smtp_port” ]=> string(2) "25" ["smtp_timeout"]=> int(5)
["smtp_crypto"]=> string(0) "" ["wordwrap"]=> bool(true)
["wrapchars"] => string(2) "76" ["mailtype"]=> string(4) "text"
["charset"]=> string(5) "utf-8" ["multipart"]=> string(5) "mixed" ["alt_message"]=> string(0) "" ["validate"]=>
bool(false) ["priority"]=> string(1) "3" ["newline"]=>
字符串(1) " " ["crlf"]=> 字符串(1) " " ["send_multipart"]=>
bool(true) ["bcc_batch_mode"]=> bool(false) ["bcc_batch_size"]=> int(200) ["_safe_mode"]=> bool(false) ["_subject"]=> string(0) "" [“_body”]=> 字符串(357)“杰弗里,这提醒您,您的 PDCA 认证将在 3 个月后到期。访问您的会员仪表板,在您方便的时候查看所有完整和不完整的课程作业。会员仪表板将帮助您完成完成过程。如需更多信息,请通过某人@example.com 或 1-800-555-1212 联系某人。" ["_finalbody"]=> string(0) ""
["_alt_boundary"]=> string(0) "" [ "_atc_boundary"]=> 字符串(0) "" ["_header_str"]=> 字符串(0) "" ["_smtp_connect"]=>
字符串(0) "" ["_encoding"]=> 字符串(4) " 8bit" ["_IP"]=>
bool(false) ["_smtp_auth"]=> bool(false) ["
string(17) "recipient@example.com" ["_cc_array"]=> array(0) { } ["_bcc_array"]=> array(0) { } ["_headers"]=> array(5) { [ "From"]=> string(54) ""Someone Example" " ["Return-Path"]=> string(28) "" ["Cc"]=> string(16) "copy@example.com" [ "Bcc"]=> string(17) "blindcopy@example.com" ["Subject"]=> string(49) "=?utf-8?Q?PDCA_Accreditation_Expiration_Warning?=" } ["_attach_name"]=> 数组(0) { } ["_attach_type"]=> array(0) { } ["_attach_disp"]=> array(0) { } ["_protocols"]=> array(3) { [0]=> string( 4) "邮件“[1]=>字符串(8)“发送邮件”[2]=>字符串(4)“smtp”}[“_base_charsets”]=>数组(2){[0]=>字符串(8)“我们-ascii" [1]=> 字符串(9) "iso-2022-" } ["_bit_depths"]=> 数组(2) { [0]=> 字符串(4) "7bit" [1]=> 字符串( 4)“8bit”}[“_priorities”]=>数组(5){[0]=>字符串(11)“1(最高)”[1]=>字符串(8)“2(高)”[2 ]=> string(10) "3 (Normal)" [3]=> string(7) "4 (Low)" [4]=> string(10) "5 (Lowest)" } }_base_charsets"]=> 数组(2) { [0]=> 字符串(8) "us-ascii" [1]=> 字符串(9) "iso-2022-" } ["_bit_depths"]=> 数组(2 ) { [0]=> string(4) "7bit" [1]=> string(4) "8bit" } ["_priorities"]=> array(5) { [0]=> string(11) "1 (最高)”[1]=> 字符串(8)“2(高)”[2]=> 字符串(10)“3(正常)”[3]=> 字符串(7)“4(低)”[ 4]=> 字符串(10) "5 (最低)" } }_base_charsets"]=> 数组(2) { [0]=> 字符串(8) "us-ascii" [1]=> 字符串(9) "iso-2022-" } ["_bit_depths"]=> 数组(2 ) { [0]=> string(4) "7bit" [1]=> string(4) "8bit" } ["_priorities"]=> array(5) { [0]=> string(11) "1 (最高)”[1]=> 字符串(8)“2(高)”[2]=> 字符串(10)“3(正常)”[3]=> 字符串(7)“4(低)”[ 4]=> 字符串(10) "5 (最低)" } }[1]=> string(4) "8bit" } ["_priorities"]=> array(5) { [0]=> string(11) "1 (最高)" [1]=> string(8) " 2(高)”[2]=>字符串(10)“3(正常)”[3]=>字符串(7)“4(低)”[4]=>字符串(10)“5(最低)” } }[1]=> string(4) "8bit" } ["_priorities"]=> array(5) { [0]=> string(11) "1 (最高)" [1]=> string(8) " 2(高)”[2]=>字符串(10)“3(正常)”[3]=>字符串(7)“4(低)”[4]=>字符串(10)“5(最低)” } }