php - कोडिनेटर ईमेल लाइब्रेरी के साथ जीमेल एसएमटीपी के साथ ईमेल भेजना




codeigniter email smtp (8)

शायद आपके होस्टिंग सर्वर और ईमेल सर्वर एक ही स्थान पर स्थित हैं और आपको smtp प्रमाणीकरण के लिए जाने की आवश्यकता नहीं है। बस हर चीज को डिफ़ॉल्ट रूप से रखें:

$config = array(        
    'protocol' => '',
    'smtp_host' => '',
    'smtp_port' => '',
    'smtp_user' => '[email protected]',
    'smtp_pass' => '**********'
    );

या

$config['protocol'] = '';
$config['smtp_host'] = '';
$config['smtp_port'] = ;
$config['smtp_user'] = '[email protected]';
$config['smtp_pass'] = 'password';

इससे मेरा काम बनता है।

<?php
class Email extends Controller {

    function Email()
    {
        parent::Controller();   
        $this->load->library('email');
    }

    function index()
    {
        $config['protocol']    = 'smtp';
        $config['smtp_host']    = 'ssl://smtp.gmail.com';
        $config['smtp_port']    = '465';
        $config['smtp_timeout'] = '7';
        $config['smtp_user']    = '[email protected]';
        $config['smtp_pass']    = '*******';
        $config['charset']    = 'utf-8';
        $config['newline']    = "\r\n";
        $config['mailtype'] = 'text'; // or html
        $config['validation'] = TRUE; // bool whether to validate email or not      

        $this->email->initialize($config);

        $this->email->from('[email protected]', 'myname');
        $this->email->to('[email protected]'); 

        $this->email->subject('Email Test');
        $this->email->message('Testing the email class.');  

        $this->email->send();

        echo $this->email->print_debugger();

        $this->load->view('email_view');
    }
}

मुझे यह त्रुटि मिल रही है:

A PHP Error was encountered
Severity: Warning
Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Connection timed out)
Filename: libraries/Email.php
Line Number: 1641

PORT 25/587 का उपयोग करना

मुझे यह त्रुटि मिली:

A PHP Error was encountered
Severity: Warning
Message: fsockopen() [function.fsockopen]: SSL operation failed with code 1. OpenSSL Error messages: error:140770FC:SSL routines:func(119):reason(252)
Filename: libraries/Email.php
Line Number: 1641

मैं अब phpmailer का उपयोग नहीं करना चाहता हूँ। (वास्तव में मैंने phpmailer का उपयोग करने का प्रयास किया है, लेकिन मैं असफल रहा)।

मैं इस समस्या को हल कैसे करूं?


आपको अपने PHP कॉन्फ़िगरेशन में SSL सक्षम करने की आवश्यकता है। php.ini लोड करें और निम्न के साथ एक पंक्ति खोजें:

;extension=php_openssl.dll

इसे असम्बद्ध करें : डी

(बयान से अर्धविराम को हटाकर)

extension=php_openssl.dll


इसे निम्नलिखित में बदलें:

$ci = get_instance();
$ci->load->library('email');
$config['protocol'] = "smtp";
$config['smtp_host'] = "ssl://smtp.gmail.com";
$config['smtp_port'] = "465";
$config['smtp_user'] = "[email protected]"; 
$config['smtp_pass'] = "yourpassword";
$config['charset'] = "utf-8";
$config['mailtype'] = "html";
$config['newline'] = "\r\n";

$ci->email->initialize($config);

$ci->email->from('[email protected]', 'Blabla');
$list = array('[email protected]');
$ci->email->to($list);
$this->email->reply_to('[email protected]', 'Explendid Videos');
$ci->email->subject('This is an email test');
$ci->email->message('It is working. Great!');
$ci->email->send();

कोडेजिनेटर के माध्यम से एचटीएमएल ईमेल भेजें

    $this->load->library('email');
    $this->load->library('parser');



    $this->email->clear();
    $config['mailtype'] = "html";
    $this->email->initialize($config);
    $this->email->set_newline("\r\n");
    $this->email->from('[email protected]', 'Website');
    $list = array('[email protected]', '[email protected]');
    $this->email->to($list);
    $data = array();
    $htmlMessage = $this->parser->parse('messages/email', $data, true);
    $this->email->subject('This is an email test');
    $this->email->message($htmlMessage);



    if ($this->email->send()) {
        echo 'Your email was sent, thanks chamil.';
    } else {
        show_error($this->email->print_debugger());
    }

पोस्टफिक्स के साथ एक लिनक्स सर्वर में, एक और विकल्प मैं काम कर रहा हूं:

सबसे पहले, अपने सर्वर के ईमेल सिस्टम का उपयोग करने के लिए सीआई ईमेल कॉन्फ़िगर करें: उदाहरण के लिए, email.php , उदाहरण के लिए

# alias to postfix in a typical Postfix server
$config['protocol'] = 'sendmail'; 
$config['mailpath'] = '/usr/sbin/sendmail'; 

फिर Google को मेल को रिले करने के लिए अपने पोस्टफिक्स को कॉन्फ़िगर करें (शायद प्रेषक पते के आधार पर)। आपको शायद आपको /etc/postfix/sasl_passwd (docs) में उपयोगकर्ता-पासवर्ड सेटिंग्स डालने की आवश्यकता होगी

यदि आपके पास लिनक्स बॉक्स है, तो यह बहुत आसान है (और कम खंडित), पहले से ही Google को अपने सभी आउटगोइंग ईमेल भेजने के लिए कॉन्फ़िगर किया गया है।


सीआई दस्तावेज़ों ( कोडइग्निटर ईमेल लाइब्रेरी ) के अनुसार ...

यदि आप उपरोक्त विधि का उपयोग करके वरीयताओं को सेट नहीं करना चाहते हैं, तो आप उन्हें एक कॉन्फ़िगरेशन फ़ाइल में डाल सकते हैं। बस email.php नामक एक नई फ़ाइल बनाएं, उस फ़ाइल में $ config array जोड़ें। फिर फ़ाइल को config / email.php पर सहेजें और इसका स्वचालित रूप से उपयोग किया जाएगा। यदि आप कॉन्फ़िगरेशन फ़ाइल में अपनी वरीयताओं को सहेजते हैं तो आपको $-- email-> प्रारंभ करें () फ़ंक्शन का उपयोग करने की आवश्यकता नहीं होगी।

मैं इसे सभी सेटिंग्स को एप्लिकेशन / config / email.php में डालकर काम करने में सक्षम था।

$config['useragent'] = 'CodeIgniter';
$config['protocol'] = 'smtp';
//$config['mailpath'] = '/usr/sbin/sendmail';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_user'] = '[email protected]';
$config['smtp_pass'] = 'YOURPASSWORDHERE';
$config['smtp_port'] = 465; 
$config['smtp_timeout'] = 5;
$config['wordwrap'] = TRUE;
$config['wrapchars'] = 76;
$config['mailtype'] = 'html';
$config['charset'] = 'utf-8';
$config['validate'] = FALSE;
$config['priority'] = 3;
$config['crlf'] = "\r\n";
$config['newline'] = "\r\n";
$config['bcc_batch_mode'] = FALSE;
$config['bcc_batch_size'] = 200;

फिर, नियंत्रक विधियों में से एक में मेरे पास कुछ ऐसा है:

$this->load->library('email'); // Note: no $config param needed
$this->email->from('[email protected]', '[email protected]');
$this->email->to('[email protected]');
$this->email->subject('Test email from CI and Gmail');
$this->email->message('This is a test.');
$this->email->send();

साथ ही, जैसा कि सेरेब्रो ने लिखा था, मुझे अपनी php.ini फ़ाइल में इस लाइन को अपूर्ण करना पड़ा और PHP को पुनरारंभ करना पड़ा:

extension=php_openssl.dll

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'ssl://smtp.googlemail.com',
    'smtp_port' => 465,
    'smtp_user' => 'xxx',
    'smtp_pass' => 'xxx',
    'mailtype'  => 'html', 
    'charset'   => 'iso-8859-1'
);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");

// Set to, from, message, etc.

$result = $this->email->send();

कोडइग्निटर मंच से






php codeigniter email smtp