そこで私は、メンバーシップの有効期限が切れる時期を毎月誰かに警告する、メンバー データベース用の機能を作成する任務を負っています。メンバーシップの有効期限が 6 か月以内の場合は 1 通、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();
}
}
すべてうまくいっています。私が構築したサイトの他の部分からこのモデルを呼び出すと、正常に動作します。Constituency に送信する必要がある在庫メールを処理するのに最適な方法です。通常、コード内では次のようになります。
$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);
このモデルを特定のインスタンスで 1 回しか呼び出せないという問題がありますか? 私は何を間違っていますか?よろしくお願いいたします。
編集: 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"]=> string(357) "ジェフリー、これは、PDCA 認定が 3 か月で期限切れになることを通知するものです。メンバーシップ ダッシュボードにアクセスして、都合のよいときにすべての完了済みおよび未完了のコース課題を表示してください。メンバーシップ ダッシュボードは、完了プロセスを支援します。詳しくは、Someone@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) ""誰かの例" " ["Return-Path"]=> string(28) "" ["Cc"]=> string(16) "copy@example.com" [ "Bcc"]=> 文字列(17) "blindcopy@example.com" ["件名"]=> 文字列(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) "sendmail" [2]=> 文字列(4) "smtp" } ["_base_charsets"]=> 配列(2) { [0]=> 文字列(8) "us -ascii" [1]=> string(9) "iso-2022-" } ["_bit_depths"]=> array(2) { [0]=> string(4) "7bit" [1]=> string( 4) "8bit" } ["_priorities"]=> array(5) { [0]=> string(11) "1 (Highest)" [1]=> string(8) "2 (High)" [2 ]=> string(10) "3 (通常)" [3]=> string(7) "4 (低)" [4]=> string(10) "5 (最低)" } }_base_charsets"]=> array(2) { [0]=> string(8) "us-ascii" [1]=> string(9) "iso-2022-" } ["_bit_depths"]=> array(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]=> string(10) "5 (最低)" } }_base_charsets"]=> array(2) { [0]=> string(8) "us-ascii" [1]=> string(9) "iso-2022-" } ["_bit_depths"]=> array(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]=> string(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 (最低)" } }