我一直在try 使用MailerSend的PHPAPI来发送模板,但无法正确设置模板变量.:

代码为:

...
$mailersend = new MailerSend(['api_key' => $maSecretKey]);
$recipients = [
    new Recipient('client_email@gmail.com', 'the email'),
];
$variables = [
    new Variable('my_registered_email@mail.com', ['date' => date('Y-m-d'), 'order_number'=>250, 'delivery'=>"chosen"])
];

$tags = ['tag'];

$emailParams = (new EmailParams())
    ->setFrom('my_registered_email@mail.com')
    ->setFromName('Website')
    ->setRecipients($recipients)
    ->setSubject('Se registro un pago nuevo')
    ->setTemplateId($templateVenta)
    ->setVariables($variables);
    //->setTags($tags);

$mailersend->email->send($emailParams);

结果:

[22-Jun-2023 07:38:51美国/芝加哥]php致命错误:未捕获MailerSend\Exceptions\MailerSendValidationException:变量.0邮箱字段不存在于.*.邮箱中.(还有1个错误)在/home4/distrib2/public_html/tt/correo/vendor/mailersend/mailersend/src/Helpers/HttpErrorHelper.php:27中

文档地址为:https://github.com/mailersend/mailersend-php#setup

推荐答案

我从来没有使用过这个库,但快速浏览一下文档,我想我可以看到问题所在.

文档中没有明确说明,至少粗略地看一下是这样,但在所有使用变量(如https://github.com/mailersend/mailersend-php#send-a-template-based-email)的示例中,Variable构造函数中的第一个参数使用的邮箱地址也被指定为Recipient.

我假设这是为了让它可以使用这些变量值替换成模板邮箱发送给该收件人…这似乎是合乎逻辑的.

但在您问题中的代码中,您在这些字段中有两个不同的邮箱地址.错误消息措辞模糊,但似乎是在抱怨您在变量中使用的邮箱与收件人列表中的任何地址都不匹配."我不能把这些变量应用到一个不存在的接受者身上",它似乎是在说.

https://developers.mailersend.com/api/v1/features.html#simple-personalization似乎支持这一观点,他们说:

简单的个性化设置允许您在发送邮箱时使用{$var}格式的变量 for each 收件人打印基本数据

因此,很明显,一组变量必须与有效的收件人相关联,否则它们就没有可行的目的地.

此外,https://github.com/mailersend/mailersend-php#debugging-validation-errors处的示例显示了这两个字段之间的不匹配,作为如何生成验证错误的示例,以便了解如何调试它们.

考虑到所有这些,我99%确定这就是你问题的根源.

因此,我希望

$recipients = [
    new Recipient('client_email@gmail.com', 'the email'),
];
$variables = [
    new Variable('client_email@gmail.com', ['date' => date('Y-m-d'), 'order_number'=>'250', 'delivery'=>"chosen"])
];

很可能会解决这种情况下的错误.

您还需要确保所有变量值都是字符串(而不是任何其他数据类型),因此我将ORDER_NUMBER更改为‘250’,而不是250.

Php相关问答推荐

条纹 checkout :订阅试用版和额外付款(add_invoice_items)错误

为WooCommerce中的特定用户角色指定促销价格

Laravel—通过单击处理多条路由

Woocommerce自定义变体html表仅显示带值的列

模型中的Laravel自定义查询字段

显示WooCommerce当前产品类别或标签的短代码

Laravel;Composer安装突然返回选项快捷方式不能为空.

使用PHP curl的Amazon SP API批处理调用

目标类[Set_Locale]不存在.拉威尔

使注册字段UserMeta值对于WooCommerce中的每个用户是唯一的

首先在WooCommerce我的帐户订单页面中移动操作按钮

Laravel Carbon DiffForHumans选项(年,月,天)

将数据推入所有子数组条目

在 WooCommerce 中应用优惠券时显示购物车商品折扣金额

使用自定义规则进行 Livewire 验证不会显示错误

添加或删除优惠券后自动刷新 WooCommerce checkout 表单字段

在WooCommerce购物车和 checkout 页面中更改总计文本

Laravel 测试 assertJsonMissing 不适用于唯一的键.为什么?

如何限制for循环php中的条目数

在 DomPDF 和 Laravel 中使用内联 css