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

CakePHP 3:通过电子邮件发送多个附件,cakephp,cakephp-3.0,email-attachments,cakephp-3.x,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 => [ 'getF

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

我也尝试过,但只发送电子邮件中的最后一封:

foreach($files as $file){
    $email->setAttachments([$file['getOriginalFileName'] => $file['destinationPath'].$file['getFileName']])
}

无法理解,需要帮助和提前感谢。

电子邮件::setAttachments()
覆盖以前附件的所有信息。因此,在文件中循环并为每个文件调用
setAttachments()
,将只发送最后一个文件

要解决这个问题,您可以使用
Email::addAttachments()
,它只添加附件而不覆盖当前数据,或者先准备附件数组,然后使用
setAttachments()
设置一次

进一步资料:


电子邮件::setAttachments()覆盖以前附件的所有信息。因此,在文件中循环并为每个文件调用
setAttachments()
,将只发送最后一个文件

要解决这个问题,您可以使用
Email::addAttachments()
,它只添加附件而不覆盖当前数据,或者先准备附件数组,然后使用
setAttachments()
设置一次

进一步资料:


您需要完全按照此处所示重新格式化文件数组@ascsoftw正在重新格式化文件数组。感谢您的帮助。您需要完全按照此处所示重新格式化文件数组@ascsoftw正在重新格式化文件数组。谢谢你的帮助谢谢你的帮助。重新格式化文件数组也可以像上面给出的那样工作。谢谢你的帮助。重新格式化文件数组也可以像上面给出的那样工作。
foreach($files as $file){
    $email->setAttachments([$file['getOriginalFileName'] => $file['destinationPath'].$file['getFileName']])
}