CodeIgniter отправляет несколько писем

Я использую CodeIgniter с библиотекой по умолчанию. И всякий раз, когда я отправляю электронное письмо, оно отправляется дважды. У кого-нибудь есть какие-нибудь указатели отладки или подсказки для решения этой проблемы?

$this->CI->email->from($this->from, $this->company_name);
$this->CI->email->to($this->to);
$this->CI->email->subject($this->subject);

eval("\$message = \"".$this->message."\";");

$this->CI->email->message($this->message);

if($attachment != "")
{
    $attac_exp=explode(",",$attachment);

    foreach($attac_exp as $key=>$value) 
    {
        if($value != '')
        {
            $this->CI->email->attach(getcwd()."/attachments/".$value);                 
        }
    }
}

$this->CI->email->send();
$this->CI->email->clear(true);

На данный момент я настроил sendmail с SMTP.

Если я попытаюсь отправить электронное письмо через командную строку, я получу только одно электронное письмо. Насколько я знаю, проблема должна быть с CodeIgniter. Я уже провел исследование по этому поводу.


person Ankit Doshi    schedule 07.10.2016    source источник
comment
У меня была похожая проблема во фрейме phalcon, для тела моего сообщения мне пришлось задействовать ob_start(), а также ob_clean и очистить сообщение... В codeigniter есть что-то похожее: send([$auto_clear = TRUE]), может быть это помогло бы   -  person Denis Solakovic    schedule 07.10.2016
comment
Спасибо, Денис, за ответ, да, я это вижу, и я уже добавил это в свой код, но почему-то у меня это не сработало.   -  person Ankit Doshi    schedule 07.10.2016
comment
покажите код вашего контроллера или код модели, куда вы отправляете это письмо, потому что я думаю, что вы вызываете эту функцию дважды...   -  person sintakonte    schedule 07.10.2016
comment
Что я также дважды проверяю перед публикацией здесь, нет многократного вызова этой функции   -  person Ankit Doshi    schedule 07.10.2016


Ответы (1)


Ниже приведен пример фрагмента, который отлично работает с прикреплением одного файла к электронному письму. Пожалуйста, обратитесь и исправьте соответственно.

        $config = array();
        $config['useragent'] = "CodeIgniter";
        $config['mailpath'] = "/usr/bin/sendmail"; // or "/usr/sbin/sendmail"
        $config['protocol'] = "smtp";
        $config['smtp_host'] = "localhost";
        $config['smtp_port'] = "25";
        $config['mailtype'] = 'html';
        $config['charset'] = 'utf-8';
        $config['newline'] = "\r\n";
        $config['wordwrap'] = TRUE;
        $dummyfrom='[email protected]';
        $system_name  = "Test Company";
        $from = '[email protected]';
        $to ='[email protected]';
        $bcc = '[email protected]';$sub="Attachment Test";
        $msg = "Please ignore this mail";
        $this->load->library('email');
        $this->email->initialize($config);
        $this->email->from($dummyfrom, $system_name);
        $this->email->reply_to($from);
        $this->email->to($to);
        $this->email->bcc($bcc);
        $this->email->subject($sub);
        $this->email->message($msg);
        $this->email->attach(APPPATH.'test.txt');
        $this->email->send();

Обратите внимание, что он выбирает файл test.txt из пути к приложению. Вы можете использовать $this->email->print_debugger(), чтобы увидеть отладку.

person Rajesh    schedule 07.10.2016
comment
Анкит, один и тот же код отправляет дважды? вы можете применить его в другой функции и проверить. При этом вы уверены, что это не codeigniter, который отправляет дважды, а логика программы где-то неверна. - person Rajesh; 08.10.2016