嘿,我正在使用Codeigniter的电子邮件助手,并遇到了一个奇怪的问题。我有以下代码:
$path = mpdf_create_billing($html);
$this->load->library('email');
$this->email->set_newline("'r'n");
$this->email->from('no-reply@foo.com');
$this->email->to("foo@gmail.com");
$this->email->subject('Invoice for '.date('d/m/y'));
$this->email->message($message);
$this->email->attach($path);
if($this->email->send())
echo "Email Sent Successfully to $email with the file $path<br>";
else
echo "Should be sending email to $email , but i didn't<br>";
现在这段代码在foreach循环中,在本例中是两次。mpdf_create_billing
返回PDF文件的路径。现在这段代码回显2个不同的文件路径,但是电子邮件是相同的,并且在两个循环中运行,两个电子邮件都包含相同的文件,尽管文件路径不同。
有人知道怎么解决吗?这是我的输出:
Email Sent Successfully to foo@foo.com with the file
/path/to/pdf/Invoice_1368452801.82065190eec1c85eb.pdf
Email Sent Successfully to foo@foo.com with the file
/path/to/pdf/Invoice_1368452804.53475190eec482917.pdf
这可能是我的SMTP服务器发送电子邮件的问题吗?
也许你应该清除$this->email?
来自CodeIgniter文档:
$this->email->clear()
将所有email变量初始化为空状态。这个函数在循环中运行电子邮件发送函数时使用,允许在两个周期之间重置数据。
foreach ($list as $name => $address)
{
$this->email->clear();
$this->email->to($address);
$this->email->from('your@example.com');
$this->email->subject('Here is your info '.$name);
$this->email->message('Hi '.$name.' Here is the info you requested.');
$this->email->send();
}
如果您将参数设置为TRUE,则任何附件将被清除为:
$this->email->clear(TRUE);
在我看来,这就是你在做什么?
链接CI3: https://www.codeigniter.com/user_guide/libraries/email.html
链接CI2: https://www.codeigniter.com/userguide2/libraries/email.html