我正在使用框架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默认配置)
答案 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");
}
}