今天我在CodeIgniter中尝试了电子邮件类。我已根据文档在config/email.php
中保存了我的电子邮件$ config。然后我就像平常一样使用电子邮件类。它是这样的:
的配置/ email.php:
<?php
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.gmail.com',
'smtp_port' => 465,
'smtp_user' => '******',
'smtp_pass' => '******',
'mailtype' => 'html',
'charset' => 'iso-8859-1'
);
?>
部分控制器:
public function sendMessage(){
$this->load->library('email');
$this->email->set_newline("\r\n");
$this->email->from('me@here.comk', 'My Name');
$this->email->to("someone@somewhere.com");
$this->email->subject('A test email from CodeIgniter using Gmail');
$this->email->message("A test email from CodeIgniter using Gmail");
$this->email->send();
}
使用此设置,一切正常,但现在如果我想更改某些设置,我该怎么做?例如,我想从其他帐户发送电子邮件,部分网站:我需要能够更改smtp_user
和smtp_pass
字段。我该怎么做?我想避免重写一个全新的配置数组。
答案 0 :(得分:2)
在数组中创建配置,并在控制器中加载电子邮件库时添加数组:
$email_config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.gmail.com',
'smtp_port' => 465,
'smtp_user' => '******',
'smtp_pass' => '******',
'mailtype' => 'html',
'charset' => 'iso-8859-1'
);
$this->load->library('email', $email_config);
$this->email->set_newline("\r\n");
$this->email->from('me@here.comk', 'My Name');
$this->email->to("someone@somewhere.com");
$this->email->subject('A test email from CodeIgniter using Gmail');
$this->email->message("A test email from CodeIgniter using Gmail");
$this->email->send();
如果您想更改配置,只需执行上述操作并将每个参数的值设置为您希望它们通过POST的任何值,或者将它们传递给控制器。
我不确定你是在我发布之后第一次编辑你的问题,还是我错过了它,但我现在看到'我想避免重写一个全新的配置阵列'。我不知道其他任何方式。
答案 1 :(得分:1)
可以覆盖来自config / email.php的设置。您需要ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
MongoOperations template = context.getBean(MongoTemplate.class);
从config / email.php中引入设置。然后,您可以为要覆盖的设置创建新的配置数组,并调用$this->load->library('email');
来应用这些设置。
<强>配置/ email.php:强>
$this->email->initialize($config);
某些控制器:
<?php
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.gmail.com',
'smtp_port' => 465,
'smtp_user' => '******',
'smtp_pass' => '******',
'mailtype' => 'html',
'charset' => 'iso-8859-1'
);
?>