我想发送一些关于从codeigniter库发送的电子邮件的额外信息。有什么办法可以配置或添加这个?在codeigniter电子邮件中添加额外的标题信息
我想分类从我的网站发送的所有邮件。我需要包含用于跟踪的sendgrid类别标头。
我想发送一些关于从codeigniter库发送的电子邮件的额外信息。有什么办法可以配置或添加这个?在codeigniter电子邮件中添加额外的标题信息
我想分类从我的网站发送的所有邮件。我需要包含用于跟踪的sendgrid类别标头。
CodeIgniter电子邮件类不允许您手动设置标题。但是,您可以通过扩展它并添加一个允许您设置sendgrid标题的新函数来更改此设置。
见笨手册中的“扩展的本地库”部分:
http://ellislab.com/codeigniter/user-guide/general/creating_libraries.html
这里有新的电子邮件类的代码可能是什么样子。
class MY_Email extends CI_Email {
public function __construct(array $config = array())
{
parent::__construct($config);
}
public function set_header($header, $value){
$this->_headers[$header] = $value;
}
}
那么你可以使用新的电子邮件类这样的设置标题:
$this->email->set_header($header, $value);
本节会解释可以被传递到SendGrid什么标题: http://sendgrid.com/docs/API%20Reference/SMTP%20API/
好吧,我只想在这里改进最好的答案。 Credit归属于@Tekniskt,这里唯一的区别是你可能在/application/config/email.php中设置的设置会被忽略,这会伤害你,特别是如果你使用自定义的STMP设置。
下面是类的完整代码MY_Email.php我从上面的答案改进:
class MY_Email extends CI_Email {
public 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");
}
// this will allow us to add headers whenever we need them
public function set_header($header, $value){
$this->_headers[$header] = $value;
}
}
希望它能帮助! :)
我做了我的测试,它似乎现在包含/config/email.php并设置正确传递。
干杯和谢谢你的答案! :)
传递$config
参数
class MY_Email extends CI_Email
{
public function __construct(array $config = array())
{
parent::__construct($config);
}
public function set_header($header, $value)
{
$this->_headers[ $header ] = $value;
}
}
设置自定义标题为
$this->email->set_header($header, $value);
感谢您的解释... – 2012-01-30 11:09:33
我已经用这种方法成功地新头添加到传出邮件。但是,当我使用它时,它不再注意包含smtp设置的email.php配置文件。有两种方法可以做到吗? – Gortron 2013-12-01 12:28:29
你是对的@Gortron,当你使用这个类,你失去了config/email.php的设置;我解决它的方法是从原始类复制整个CONSTRUCT()函数,不要执行parent :: __ construct();不知道为什么发生这种情况,但是当我复制完整的构造函数时,它就可以工作。我会在下面提供另一个答案,因为整个代码的评论太短了:) – 2014-02-11 14:26:29