Sendinblue PHP API -多个收件人只发送到数组中的最后一个

slmsl1lt  于 2023-01-01  发布在  PHP
关注(0)|答案(1)|浏览(138)

我正在尝试使用SendinBlue的API v3 Php Library(https://github.com/sendinblue/APIv3-php-library)向多个收件人发送电子邮件。
下面的代码,我认为,它设置正确-因为代码打印了代码的$result部分,这意味着没有异常。
但是,当测试发送给多个收件人时,只有数组中最后一个电子邮件地址(下面代码中的person2@exampe.com)会收到电子邮件。
如果我翻转to数组的内容,使person1@example.com出现在数组的最后,那么只有该地址会收到电子邮件。
下面是示例代码:

// ####################################################
// Sendinblue Email
// ####################################################

$config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', $send_in_blue_api_key);

$apiInstance = new SendinBlue\Client\Api\TransactionalEmailsApi(
    new GuzzleHttp\Client(),
    $config
);
$sendSmtpEmail = new \SendinBlue\Client\Model\SendSmtpEmail();
$sendSmtpEmail['subject'] = 'Mulitple Recipients Email Test';
$sendSmtpEmail['htmlContent'] = $html;
$sendSmtpEmail['sender'] = array('name' => 'Test Messages', 'email' => 'messages@example.com');
$sendSmtpEmail['to'] = array(
    array('email' => 'person1@example.com', 'name' => 'Bugs Bunny'
        , 'email' => 'person2@example.com', 'name' => 'Daffy Duck')
);
$sendSmtpEmail['replyTo'] = array('email' => 'sender@example.com', 'name' => 'Reply Name');
try {
    $result = $apiInstance->sendTransacEmail($sendSmtpEmail);
    print_r($result);
} catch (Exception $e) {
    $send_error = $e->getMessage();
    print_r($send_error);
}

我尝试将to数组从:

$sendSmtpEmail['to'] = array(
    array('email' => 'person1@example.com', 'name' => 'Bugs Bunny'
        , 'email' => 'person2@example.com', 'name' => 'Daffy Duck')
);

收件人:

$sendSmtpEmail['to'] = array('email' => 'person1@example.com', 'name' => 'Bugs Bunny'
                           , 'email' => 'person2@example.com', 'name' => 'Daffy Duck');

但是,API返回了以下内容,我认为这意味着我在to数组中定义多个收件人的方式是正确的:

[400] Client error: `POST https://api.sendinblue.com/v3/smtp/email` resulted in a `400 Bad Request` response:
{"code":"invalid_parameter","message":"to is not valid"}

我想知道是否有任何办法绕过这个问题?

64jmpszr

64jmpszr1#

你必须创建一个数组的数组。每个数组都应该有emailname键:
短数组语法:

$sendSmtpEmail['to'] = [
    ['email' => 'person1@example.com', 'name' => 'Bugs Bunny'],
    ['email' => 'person2@example.com', 'name' => 'Daffy Duck'],
];

等同于:

$sendSmtpEmail['to'] = array(
    array('email' => 'person1@example.com', 'name' => 'Bugs Bunny'),
    array('email' => 'person2@example.com', 'name' => 'Daffy Duck'),
);

相关问题