我想在CakePHP3.x中发送电子邮件时附加多个文件。
这是我的数据并尝试过:
$files = [
(int) 0 => [
'getFileName' => '1568016275_452872.xlsx',
'getOriginalFileName' => 'DID Check.xlsx',
'destinationPath' => '\webroot\/upload/files/'
],
(int) 1 => [
'getFileName' => '1568016275_430107.csv',
'getOriginalFileName' => 'clists.csv',
'destinationPath' => '\webroot\/upload/files/'
]
]
$email->setAttachments($files)->send();
我也尝试过,但只发送了电子邮件中的最后一个:
foreach($files as $file){
$email->setAttachments([$file['getOriginalFileName'] => $file['destinationPath'].$file['getFileName']])
}
无法理解,需要帮助并事先感谢。
答案 0 :(得分:2)
Email::setAttachments()
会覆盖有关先前附件的所有信息。因此,循环浏览文件并为每个文件调用setAttachments()
只会导致发送最后一个文件。
要解决此问题,您可以使用Email::addAttachments()
(仅添加附件而不覆盖当前数据),也可以先准备附件数组,然后使用setAttachments()
对其进行一次设置。
更多信息: