4

標準のコードイグナイターを使用する場合

mail->send()

TRUE または FALSE のみを返します。ただし、特定の SMTP リターン コードを異なる方法で処理する必要があります。デバッグ テキスト情報を解析するか、何らかの方法で Codeigniter のメール ハンドラーをオーバーライドすることができます。これを行う簡単でエレガントな方法はありますか?

前もって感謝します。

4

2 に答える 2

3

CodeIgniter には、このためのメカニズムが組み込まれているとは思いません。できることは、CI 電子メール クラスを拡張し、保護された_debug_msg配列を公開する関数を追加することです。

email クラスのソースを見ると、print_debugger()関数が_debug_msg配列を文字列に変換していることがわかります。したがって、_debug_msg探しているものがあれば、文字列を解析する必要はありません。

class MY_Email extends CI_Email {

    public function __construct()
    {
        parent::__construct();
    }

    public get_msg()
    {
        if (count($this->_debug_msg) > 0)
        {
            return $this->_debug_msg;
        }
        else
        {
            return FALSE;
        }
    }
}

CI ライブラリを拡張する方法については、次のリンクを参照してください http://codeigniter.com/user_guide/general/creating_libraries.html

于 2012-06-12T13:38:20.197 に答える
2

を使用して電子メールを送信してsendmailいる場合は、後になるまで SMTP リターン コードを取得できない場合があります。

バウンスを取得する方法 (私は推測していますか?) はReturn-Path、送信メールに を追加し、 が担当するメール受信ボックスを選択することです。これによりprocmail、フィードバック メールを PHP にパイプして戻して解析することができます。

上記の詳細が必要な場合はお知らせください。

于 2012-06-12T13:35:57.700 に答える