Codeigniter忽略电子邮件配置

时间:2014-11-28 12:58:17

标签: php codeigniter email gmail codeigniter-2

我正在使用框架codeigniter。我不明白电子邮件库的行为。 我使用配置发送电子邮件,但即使是假的/错误的配置,我也可以发送电子邮件!

例如,我在文件夹config中创建了de file email.php,然后我放了:

$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com';
$config['smtp_user'] = 'myemail@gmail.com';
$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'] = 'myemail@gmail.com';
$array['smtp_pass'] = 'fakepassword';
$array['smtp_port'] = '465';

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

我不明白。我只是想发送电子邮件扔我的Gmail,但我不能,因为电子邮件库不采取我的配置,我不明白采取了哪种默认配置(我想codeingniter默认配置)

3 个答案:

答案 0 :(得分:0)

加载电子邮件类后,应使用配置选项对其进行初始化。像这样;

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

以下是用户指南的网址,供您参考; https://ellislab.com/codeigniter/user-guide/libraries/email.html

答案 1 :(得分: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');

答案 2 :(得分:0)

当我扩展电子邮件类时,我遇到了这个问题,它忽略了email.php配置并使用默认的服务器电子邮件配置发送它。如果您正在扩展,则需要将原始Email.php库中的__construct添加到扩展库中

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");
    }
}