You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中使用Mailgun API添加附件报错:Invalid resource type: array 求助

解决Mailgun API发送邮件时的Invalid resource type: array错误

你的问题出在两个地方:attachment参数的格式错误,以及一个语法错误,导致Guzzle无法正确处理附件资源。

具体修正步骤:

  • 移除不必要的嵌套数组:单个附件不需要包在二维数组里,直接用一维关联数组即可;如果是多个附件,才需要用数组嵌套数组的格式。
  • 修复语法错误:attachment数组行末尾的分号要改成逗号,因为$parameters是关联数组,元素之间必须用逗号分隔。
  • 确保文件路径有效:$attachment要传入文件的绝对路径,或者能被PHP正确找到的相对路径,避免因文件不存在导致后续错误。

修正后的代码:

$mgClient = new Mailgun('xxx');
$domain = "xxx";
$parameters = array(
              'from'    => 'xxx',
              'to'      => $to,
              'subject' => $subject,
              'text'    => $text,
              'attachment' => [
                  'filePath' => $attachment,
                  'filename' => $file_name  
              ]
);

$result = @$mgClient->sendMessage("$domain", $parameters);

如果需要发送多个附件,格式如下:

'attachment' => [
    [
        'filePath' => '/absolute/path/to/file1.pdf',
        'filename' => 'invoice.pdf'
    ],
    [
        'filePath' => '/absolute/path/to/file2.jpg',
        'filename' => 'receipt.jpg'
    ]
]

错误原因说明:

Mailgun的PHP SDK期望attachment参数要么是单个文件资源句柄(比如fopen()返回的资源),要么是包含filePath和filename的关联数组(单个附件),或者是这类关联数组的集合(多个附件)。你原本的代码把单个附件包在了二维数组里,导致Guzzle在尝试将其转换为PSR-7流时,无法识别这个数组结构,从而抛出Invalid resource type: array错误。另外,数组末尾的分号会破坏数组的语法结构,进一步引发解析问题。

内容的提问来源于stack exchange,提问作者christian nyembo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:20:27