Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Codeigniter: Email attachment of last emails not cleared while sending multiple emails in loop

My code sends multiple emails in loop with attachment,

Problem is attachments of last(previous all) emails get attached to next email.

ex. suppose 3 emails in database with 1 attachment in each(a1.pdf, a2.pdf, a3.pdf) then, it sends email with attachment as

email 1:

attachment :a1.pdf

email 2:

attachment :a1.pdf, a2.pdf

email 3:

attachment :a1.pdf, a2.pdf, a3.pdf

I am using codeigniter framework.

My code is (this code is called in loop)

. . .

$this->email->subject($item->subject);

        $this->email->message($message);
        $attachments='';
        if(strlen($item->attachment) > 5)
        {
            $attachments = explode(',', $item->attachment);
            foreach($attachments as $attachment)
            {
                if(strlen($attachment)>5)
                $this->email->attach(FCPATH . 'attachments/' . $attachment);                    
            }                

        }

      $this->email->send();

. . .

like image 708
anils Avatar asked Aug 13 '11 13:08

anils


2 Answers

You need to reset it in CodeIgniter.

At the end of the loop add:

$this->email->clear(TRUE);

This resets all email variables including the attachments, allowing you to create a new mail.

like image 153
mcls Avatar answered Oct 14 '22 23:10

mcls


You need to use $this->email->clear(); to clean out the variables set within the loop. Read the manual.

like image 34
dakdad Avatar answered Oct 15 '22 00:10

dakdad