CodeIgniter отправляет несколько сообщений электронной почты

#php #codeigniter #email

#php #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. Я уже провел свое исследование по этому вопросу.

Комментарии:

1. У меня была аналогичная проблема в phalcon frame, для тела моего сообщения мне пришлось задействовать ob_start() и ob_clean и очистить сообщение… В codeigniter есть нечто подобное: отправить([$auto_clear = TRUE]), может быть, это поможет

2. Спасибо, Денис, за ответ, да, я это вижу, и я уже включил это в свой код, но все равно у меня почему-то не получалось

3. покажите код вашего контроллера или код модели, куда вы отправляете это письмо, потому что я думаю, что вы вызываете эту функцию дважды…

4. Что я также дважды проверяю перед публикацией здесь, нет многократного вызова этой функции

Ответ №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'] = "rn";
        $config['wordwrap'] = TRUE;
        $dummyfrom='admin@mydoamin.com';
        $system_name  = "Test Company";
        $from = 'rajesh@abcd.com';
        $to ='to@abcd.com';
        $bcc = 'bcc@abcd.com';$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() для просмотра отладки.

Комментарии:

1. Ankit, этот же код также отправляет его дважды? вы можете применить его в другой функции и проверить. При этом вы уверены, что это не codeigniter, который отправляет дважды, но логика программы где-то неверна.