在codeigniter电子邮件中添加额外的标头信息

Aru*_* SS 6 php email codeigniter html-email

我想发送一些关于从codeigniter库发送的电子邮件的额外信息.有没有办法配置或添加这个?

我想对来自我网站的所有外发邮件进行分类.我需要包含sendgrid类别标题以进行跟踪.

小智 10

CodeIgniter电子邮件类不允许您手动设置标头.但是,您可以通过扩展它并添加一个允许您设置sendgrid标头的新功能来更改此设置.

请参阅CodeIgniter手册的"扩展本机库"部分:
https://www.codeigniter.com/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;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用新的电子邮件类设置标头,如下所示:

$this->email->set_header($header, $value);
Run Code Online (Sandbox Code Playgroud)

此页面将解释哪些标头可以传递给SendGrid:http://sendgrid.com/docs/API%20Reference/SMTP%20API/


d-w*_*ade 6

好吧,我只想在这里改进最佳答案.感谢@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;
  }
}
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!:)

我做了我的测试,似乎现在包含/config/email.php并正确传递设置.

干杯,谢谢你的回答!:)