Добавить дополнительную информацию заголовка в адрес электронной почты codeigniter - PullRequest
6 голосов
/ 30 января 2012

Я хотел бы отправить дополнительную информацию о письмах, отправленных из библиотеки codeigniter. Есть ли способ настроить или добавить это?

Я хочу классифицировать всю исходящую почту с моего сайта. Мне нужно включить заголовок категории sendgrid для отслеживания.

Ответы [ 3 ]

10 голосов
/ 30 января 2012

Класс электронной почты 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;
    }
}

После этого вы сможете установить заголовки, используя новый класс электронной почты, например:

$this->email->set_header($header, $value);

Эта страница объяснит, какие заголовки могут быть переданы в SendGrid: http://sendgrid.com/docs/API%20Reference/SMTP%20API/

6 голосов
/ 11 февраля 2014

Хорошо, я просто хочу улучшить лучший ответ здесь. Кредит идет на @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 включен, и настройки передаются правильно.

Ура и спасибо за ответ! :)

1 голос
/ 31 мая 2015

Передайте параметр $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);
...