Codeigniter:在循环发送多封电子邮件时,最后一封电子邮件的附件未清除

16

我的代码循环发送多封带附件的邮件,

问题是每个后续邮件的附件会包含上一个(所有之前的)邮件的附件。

例如,在数据库中有3封电子邮件,每封邮件都有1个附件(a1.pdf,a2.pdf,a3.pdf),那么:

第一封邮件:

附件:a1.pdf

第二封邮件:

附件:a1.pdf,a2.pdf

第三封邮件:

附件:a1.pdf,a2.pdf,a3.pdf

我使用的是CodeIgniter框架。

这是我的代码(该代码在循环中调用):

. . .

$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();
请提供需要翻译的内容。

6
找到解决方法:$this->email->clear(TRUE)。该代码会清除电子邮件类中之前设置的所有属性和值,以便重新设置新的电子邮件信息。 - anils
2个回答

25

你需要在CodeIgniter中进行重置。

在循环的结尾添加:

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

这会重置所有的电子邮件变量,包括附件,使得您能够创建新的邮件。


这个代码可以运行,但在我的情况下,在最后一次循环中没有附加文件。 - Kentot
被点赞为正确答案,因为clear()需要一个TRUE布尔值来清除附件。 - Tobe_Sta

17

在循环中,您需要使用$this->email->clear();来清理设置的变量。 阅读手册


1
在调用clear()时记得加上TRUE,以删除任何当前的附件。 - Tobe_Sta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接