问题
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();
. . .
回答1:
You need to use $this->email->clear();
to clean out the variables set within the loop. Read the manual.
回答2:
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.
来源:https://stackoverflow.com/questions/7050690/codeigniter-email-attachment-of-last-emails-not-cleared-while-sending-multiple