我试图为每封电子邮件设置一个唯一参数的列表,SMTP API的官方参考非常简单地描述了这个功能,here。
我正在使用的SendGrid PHP库的API文档也没有多大帮助:
/**
* setUniqueArguments
* Set a list of unique arguments, to be used for tracking purposes
* @param array $key_value_pairs - list of unique arguments
*/
public function setUniqueArguments(array $key_value_pairs)
{
$this->header_list['unique_args'] = $key_value_pairs;
return $this;
}
/**
* addUniqueArgument
* Set a key/value pair of unique arguments, to be used for tracking purposes
* @param string $key - key
* @param string $value - value
*/
public function addUniqueArgument($key, $value)
{
$this->header_list['unique_args'][$key] = $value;
return $this;
}
因此,事实上,我的实现基于明显的逻辑结论,并决定为头部的唯一参数部分创建多维json,与替换值数组和收件人数组一一对应,但不幸的是,这不起作用,并导致无效的XSMTP API头部错误被反弹回我的电子邮件。
如果有人以前使用过这个功能,并且可以简要地指导我如何正确使用它(也许在每个addTo之后调用addUniqueArgument?)),它可以对我有很大的帮助。
2条答案
按热度按时间zbdgwd5y1#
我看到你先提到了唯一的论点,但你又提到了一个完全无关的问题。唯一参数应用于整个API调用,例如,这些参数可能包含系统中的批处理ID,以便您可以更轻松地将电子邮件事件与数据相匹配。然而,替换基本上是电子邮件中的字符串替换,以针对其收件人个性化每个电子邮件,并且那些应用于电子邮件的每个收件人而不是API调用。
Sendgrid唯一参数
如果你正在使用他们的API库,你不必弄混JSON请求头,只要像其他PHP对象一样使用这个库就可以了。例如,如果你必须设置三个变量,
var1
,var2
,var3
,它要么是这样的:或者这个
不同之处在于,第一个选项
setUniqueArguments
完全替换了之前添加的任何其他变量,而第二个选项addUniqueArgument
向现有变量添加了一个变量。Sendgrid替换
假设您正在使用他们的API库,并且您有2个收件人,email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)和alice@example com,并且您需要在电子邮件中提到他们的名字。在这种情况下,您在电子邮件的正文中使用占位符字符串,基本上是任何通常不会出现的内容。在我们的例子中,让我们假设它可能是:
其中,
<<Name>>
是收件人姓名的占位符。在这种情况下,您可以这样构造API调用(我省略了与电子邮件内容等相关的部分):addSubstituion
调用中的值的顺序必须与收件人列表的顺序相同。cgyqldqp2#
2023更新
下面介绍如何使用其v7 PHP library设置新的
custom_args