2012-01-30 23 views
6

में अतिरिक्त शीर्षलेख जानकारी जोड़ें मैं कोडइग्निटर लाइब्रेरी से भेजे गए ईमेल पर कुछ अतिरिक्त जानकारी भेजना चाहता हूं। क्या इसे कॉन्फ़िगर करने या जोड़ने का कोई तरीका है?कोडनिर्देशक ईमेल

मैं अपनी साइट से सभी आउटगोइंग मेल को वर्गीकृत करना चाहता हूं। मुझे ट्रैकिंग के लिए प्रेषक श्रेणी शीर्षलेख शामिल करने की आवश्यकता है।

उत्तर

10

कोडइग्निटर ईमेल क्लास आपको मैन्युअल रूप से हेडर सेट करने की अनुमति नहीं देता है। हालांकि आप इसे विस्तारित करके और एक नया फ़ंक्शन जोड़कर इसे बदल सकते हैं जो आपको प्रेषक शीर्षलेख सेट करने की अनुमति देता है।
http://ellislab.com/codeigniter/user-guide/general/creating_libraries.html
यहाँ अपना नया ईमेल कक्षा में कोड नज़र आ सकते हैं:

CodeIgniter मैनुअल के "विस्तार मूल निवासी पुस्तकालय" अनुभाग देखें।

class MY_Email extends CI_Email { 

    public function __construct(array $config = array()) 
    { 
     parent::__construct($config); 
    } 

    public function set_header($header, $value){ 
     $this->_headers[$header] = $value; 
    } 
} 

फिर आप इस तरह अपने नए ईमेल वर्ग का उपयोग कर हेडर सेट करने में सक्षम हो जाएगा:

$this->email->set_header($header, $value); 

इस पृष्ठ की व्याख्या करेगा क्या हेडर SendGrid के लिए पारित किया जा सकता है: http://sendgrid.com/docs/API%20Reference/SMTP%20API/

+0

स्पष्टीकरण के लिए धन्यवाद ... –

+0

मैं इस विधि का इस्तेमाल किया है सफलतापूर्वक बाहर जाने वाले मेल के लिए नए हेडर जोड़ने के लिए

class MY_Email extends CI_Email { public function __construct(array $config = array()) { parent::__construct($config); } public function set_header($header, $value) { $this->_headers[ $header ] = $value; } } 

सेट कस्टम हेडर दर्रा $config पैरामीटर। हालांकि जब मैं इसका उपयोग करता हूं, तो यह अब email.php कॉन्फ़िगरेशन फ़ाइल पर कोई ध्यान नहीं देता है जिसमें smtp सेटिंग्स होती है। क्या दोनों को करने का कोई तरीका है? – Gortron

+1

जब आप इस कक्षा का उपयोग करते हैं, तो आप सही @Gortron हैं, आप config/email.php से सेटिंग्स खो देते हैं; जिस तरह से मैंने इसे हल किया है, पूरे वर्ग से पूरे CONSTRUCT() फ़ंक्शन को प्रतिलिपि बनाना है, माता-पिता नहीं करें :: __ निर्माण(); यकीन नहीं है कि यह क्यों हो रहा है, लेकिन जब मैं पूर्ण कन्स्ट्रक्टर की प्रतिलिपि बनाता हूं, तो यह काम करता है। मैं नीचे एक और जवाब दूंगा, क्योंकि टिप्पणियां पूरे कोड के लिए बहुत कम हैं :) –

6

ठीक है , मैं बस यहां सबसे अच्छा जवाब सुधारना चाहता हूं। क्रेडिट @Tekniskt पर जाता है, और यहां एकमात्र अंतर यह है कि आपके पास /application/config/email.php में मौजूद सेटिंग्स को अनदेखा किया जाता है, जो दर्द होता है, खासकर यदि आप कस्टम एसटीएमपी सेटिंग्स का उपयोग कर रहे हैं।

class MY_Email extends CI_Email { 

public function __construct($config = array()) 
{ 
    if (count($config) > 0) 
    { 
     $this->initialize($config); 
    } 
    else 
    { 
     $this->_smtp_auth = ($this->smtp_user == '' AND $this->smtp_pass == '') ? FALSE : TRUE; 
     $this->_safe_mode = ((boolean)@ini_get("safe_mode") === FALSE) ? FALSE : TRUE; 
    } 

    log_message('debug', "Email Class Initialized"); 
} 

// this will allow us to add headers whenever we need them 
public function set_header($header, $value){ 
    $this->_headers[$header] = $value; 
    } 
} 

आशा है कि यह मदद करता है:

यहाँ वर्ग से भरा कोड MY_Email.php मैं ऊपर जवाब से सुधार किया है है! :)

मैंने अपना परीक्षण किया, और ऐसा लगता है कि अब /config/email.php शामिल है और सेटिंग्स ठीक से पारित की जाती हैं।

चीयर्स और उत्तर के लिए धन्यवाद! :)

संबंधित मुद्दे