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


79
<?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']    = 'mygmail@gmail.com';
        $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('mygmail@gmail.com', 'myname');
        $this->email->to('target@gmail.com'); 

        $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 का उपयोग करने की कोशिश की है, लेकिन मैं असफल रहा)।

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


$config['validation'] = TRUEगलत है, इंडेक्स कुंजी मान्य है इसलिए उपयोग करें$config['validate'] = TRUE
डेलमो

जवाबों:


122
$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();

से CodeIgniter मंच


10
+1, ध्यान दें कि सभी ऐरे तत्व एकल उद्धरणों में संलग्न हैं, और केवल पैरामीटर $this->email->set_newlineदोहरे उद्धरण चिह्नों में संलग्न हैं। यह बहुत महत्वपूर्ण है अन्यथा यह काम नहीं करता है।
नवीन कुमार

11
ऐसा इसलिए है क्योंकि PHP (और कुछ अन्य भाषाओं में) का \nअर्थ केवल नई पंक्ति है यदि यह दोहरे उद्धरण चिह्नों में है। सिंगल कोट्स में इसका मतलब शाब्दिक अक्षर \ n है।
DMIN

1
समाधान था, thnx: $ इस के लिए-> email-> set_newline ("\ r \ n")
TooCooL

1
@NaveenKumar अभी भी ईमेल भेजने में सक्षम नहीं है। कोई प्रतिक्रिया नहीं मिल रही है$result = $this->email->send();
Pathik Vejani

1
@ThorpeObazee सर क्या हम मेल कॉन्फ़िगरेशन फ़ाइल में कुछ और कॉन्फ़िगरेशन जोड़ सकते हैं। जैसे, $ config ['subjectEnquiry'] => "पूछताछ ईमेल"; या $ config ['subjectSuccess'] => "सफलतापूर्वक डेटा जोड़ा गया";
अंकित सुथार

19

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

;extension=php_openssl.dll

इसे उतारें। : डी

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

extension=php_openssl.dll


1
यह केवल विंडोज सर्वर के लिए है। यह देखने के लिए कि क्या आपके पास उचित सॉकेट उपलब्ध है और यदि आपके सर्वर पर ओपनस्एल है तो phpinfo () का उपयोग करें।
जेवदेसिन

17

CI डॉक्स ( CodeIgniter ईमेल लाइब्रेरी ) के अनुसार ...

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

मैं आवेदन / config / email.php में सभी सेटिंग्स डालकर काम करने में सक्षम था ।

$config['useragent'] = 'CodeIgniter';
$config['protocol'] = 'smtp';
//$config['mailpath'] = '/usr/sbin/sendmail';
$config['smtp_host'] = 'ssl://smtp.googlemail.com';
$config['smtp_user'] = 'YOUREMAILHERE@gmail.com';
$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('YOUREMAILHERE@gmail.com', 'YOUREMAILHERE@gmail.com');
$this->email->to('SOMEEMAILHERE@gmail.com');
$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

क्या आप मुझे ईमेल लाइब्रेरी कोड प्रदान करेंगे, हर बार मैंने $ यह देखा-> लोड-> लाइब्रेरी ('ईमेल') लेकिन मेरे पास ईमेल लिबररी नहीं है मैं क्या कर सकता हूँ ?? कृपया सर मुझे एक तरीका दें जिससे मैं CI और कोडिंग में नया हूं। धन्यवाद :)
प्रकाश पोखरेल १६'१

7

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

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

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

$ci->email->from('blablabla@gmail.com', 'Blabla');
$list = array('xxx@gmail.com');
$ci->email->to($list);
$this->email->reply_to('my-email@gmail.com', 'Explendid Videos');
$ci->email->subject('This is an email test');
$ci->email->message('It is working. Great!');
$ci->email->send();

5

codeiginater के माध्यम से html ईमेल भेजें

    $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@example.com', 'Website');
    $list = array('xxxxxxxx@archmage.lk', 'xxxxx@gmail.com');
    $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());
    }

1

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

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

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

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

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


1

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

$config = array(        
    'protocol' => '',
    'smtp_host' => '',
    'smtp_port' => '',
    'smtp_user' => 'yourname@gmail.com',
    'smtp_pass' => '**********'
    );

या

$config['protocol'] = '';
$config['smtp_host'] = '';
$config['smtp_port'] = ;
$config['smtp_user'] = 'yourname@gmail.com';
$config['smtp_pass'] = 'password';

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


मेरे लिए $ config ['crlf'] = "\ r \ n" के बिना काम न करें; $ config ['newline'] = "\ r \ n";
BoCyrill

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.