我一直在尝试使用Mailersend的PHP API发送模板,但无法正确设置模板变量。:
代码为:
...
$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 America/芝加哥] PHP致命错误:未捕获的MailerSend\Exceptions\MailerSendValidationException:variables.0.email字段在.*. email中不存在。/home4/distrib2/public_html/tt/correo/vendor/mailersend/mailersend/src/Helpers/HttpErrorHelper.php:27
文档位于:https://github.com/mailersend/mailersend-php#setup
1条答案
按热度按时间f3temu5u1#
我从来没有使用过这个库,但快速查看文档,我想我可以看到问题所在。
文档中没有明确说明,至少从简单的Angular 来看,但在所有使用Variables的示例中(如https://github.com/mailersend/mailersend-php#send-a-template-based-email),
Variable
构造函数中的第一个参数使用了一个电子邮件地址,该地址也被指定为Recipient
。我假设这是为了让它可以使用这些变量值替换成模板化的电子邮件给那个收件人...这似乎是合乎逻辑的。
但是在你的问题中的代码中,你在这些字段中有两个不同的电子邮件地址。错误消息措辞模糊,但似乎是在抱怨您在变量中使用的电子邮件与收件人列表中的任何地址都不匹配。“我不能将这些变量应用到一个不存在的收件人”,它似乎在说。
https://developers.mailersend.com/api/v1/features.html#simple-personalization 似乎支持这一点,说:
简单的个性化设置允许您在发送电子邮件时使用{$var}格式的变量为每个收件人打印基本数据
所以很明显,一组变量必须与一个有效的接收者相关联,否则它们就没有可行的目的地。
此外,www.example.com上的示例https://github.com/mailersend/mailersend-php#debugging-validation-errors显示了这两个字段之间的不匹配,作为如何生成验证错误的示例,以便了解如何调试它们。
考虑到所有这些,我99%肯定这是你问题的根源。
因此我希望
很可能解决这种情况下的错误。
您还需要确保所有变量值都是字符串(而不是任何其他数据类型),所以我将order_number更改为'250'而不是250。