CakePHP 3:通过电子邮件发送多个附件

时间:2019-09-09 08:20:36

标签: cakephp cakephp-3.0 email-attachments cakephp-3.x

我想在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']])
}

无法理解,需要帮助并事先感谢。

1 个答案:

答案 0 :(得分:2)

Email::setAttachments()会覆盖有关先前附件的所有信息。因此,循环浏览文件并为每个文件调用setAttachments()只会导致发送最后一个文件。

要解决此问题,您可以使用Email::addAttachments()(仅添加附件而不覆盖当前数据),也可以先准备附件数组,然后使用setAttachments()对其进行一次设置。

更多信息:

Cake\Mailer\Email::addAttachments()

Cake\Mailer\Email::setAttachments()