【发布时间】:2018-07-15 01:47:27
【问题描述】:
我正在尝试将 3 个 pdf 文件附加到电子邮件中,我遇到的问题是 is_file 在前两个文件上给出了错误,但第三个文件有效。这些文件来自一个文本框,并像这样展开:
$pdfs = explode("\n", $string);
我把它放在一个 foreach 循环中以附加到这样的电子邮件:
foreach($pdfs as $pdf) {
if (is_file(JPATH_ROOT . $pdf)) {
$mail['attachment'][] =
array('name' => basename($pdf), 'file' => JPATH_ROOT . $pdf);
}
}
当我运行此代码时,我只附加了第三个 pdf 文件,但是如果我删除 is_file() 它们在数组中,但不会附加到发送的电子邮件中。
所以结果是:
[attachment] => Array
(
[0] => Array
(
[name] => pdf_file_1.pdf
[file] => /home/psinke/domains/*****/public_html/pdf_file_1.pdf
)
[1] => Array
(
[name] => pdf_file_2.pdf
[file] => /home/psinke/domains/*****/public_html/pdf_file_2.pdf
)
[2] => Array
(
[name] => pdf_file_3.pdf
[file] => /home/psinke/domains/*****/public_html/pdf_file_3.pdf
)
)
但前两个文件未附加到已发送的电子邮件中。
【问题讨论】:
-
使用
file_exists($file); -
@Akintunde007 不幸的是,这给出了相同的结果。
-
也许分隔输入数据中这些条目的换行符不只是 \n ...所以你可能在前两个的末尾留下了一个 \r,这当然使 PHP 不是找到那些文件。第三个文件不会有这个问题,因为可能在那一行之后没有更多的换行符。
-
@CBroe 这个工作非常感谢你:D