2014-11-28 4 views
0

Я использую codeignigniter. Я не понимаю поведение электронной почты. Я использую конфигурацию для отправки электронной почты, но даже помещая фальшивую/неправильную конфигурацию, я могу отправлять электронные письма!Codeigniter игнорировать конфигурацию электронной почты

Например, я создаю файл де email.php в конфигурации папки, и я поставил:

$config['protocol'] = 'smtp'; 
$config['smtp_host'] = 'ssl://smtp.gmail.com'; 
$config['smtp_user'] = '[email protected]'; 
$config['smtp_pass'] = 'fakepassword'; 
$config['smtp_port'] = '465'; 

Тогда я:

 $CI =& get_instance(); 
     $CI->load->library("email"); 
     $CI->email->from(app_recover_pass_from, app_recover_pass_from_name); 
     $CI->email->to($email); 
     $CI->email->subject(app_recover_pass_subject); 
     $CI->email->message(sprintf(app_recover_pass_message,$newPassword)); 
     if (! $CI->email->send()) 

И я получаю электронную почту !!! Письмо отправлено.

Даже если я создам конфигурацию и устанавливаю в метод библиотеки загрузки, я могу отправлять электронные письма с неправильной/поддельной конфигурацией, как и другая организация, отправляющая электронные письма.

$array['protocol'] = 'smtp'; 
$array['smtp_host'] = 'ssl://smtp.gmail.com'; 
$array['smtp_user'] = '[email protected]'; 
$array['smtp_pass'] = 'fakepassword'; 
$array['smtp_port'] = '465'; 

$CI =& get_instance(); 
$CI->load->library("email",$array); 
... 

Я не понимаю. Я просто хочу отправить почтовый ящик в Gmail, но я не могу, потому что библиотека электронной почты не принимает мою конфигурацию, и я не понимаю, какая конфигурация по умолчанию выполнена (я полагаю, что эта конфигурация по умолчанию для кодирования)

+0

создать один файл email.php в папке конфигурации поместить всю конфигурацию в этот файл CodeIgniter автоматически считать, что конфиг –

+0

Я сделал и ничего – jlmg5564

ответ

0

После того, как вы загрузили класса электронной почты, вы должны инициализировать его, используя параметры конфигурации. Как это;

$this->load->library('email'); 
$config = array(
    // config options 
); 
$this->email->initialize($config); 

Вот URL-адрес руководства пользователя, для справки; https://ellislab.com/codeigniter/user-guide/libraries/email.html

+0

Я сделал и ничего – jlmg5564

+0

Что вы получаете, если печатаете отладчик? $ This-> email-> print_debugger() – Craig

0

Вы пробовали автозагрузку конфигурации электронной почты?

В application/config/autoload.php, искать $autoload['config'] и добавить электронную почту в массив (CI v2.1.x)

/* 
| ------------------------------------------------------------------- 
| Auto-load Config files 
| ------------------------------------------------------------------- 
| Prototype: 
| 
| $autoload['config'] = array('config1', 'config2'); 
| 
| NOTE: This item is intended for use ONLY if you have created custom 
| config files. Otherwise, leave it blank. 
| 
*/ 

$autoload['config'] = array('email'); 
0

У меня была эта проблема, когда я был расширяющий класс электронной почты, он игнорирует email.php конфигурации и отправляет его, используя конфигурацию электронной почты сервера по умолчанию. Если вы расширяете вам нужно будет добавить __construct из оригинальной библиотеки email.php в вашу расширенную библиотеку

class MY_Email extends CI_Email 
{ 

    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"); 
    } 
} 
Смежные вопросы