单独电子邮件的SendGrid唯一参数
我尝试为每个电子邮件设置一个唯一参数列表,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?),它对我会有很大帮助。
解决方案
我看到您先提到了唯一参数,然后又提到了完全不相关的替换。唯一参数作为一个整体应用于API调用,例如,这些参数可能包含系统中的批处理ID,以便您可以更轻松地将电子邮件事件与您的数据相匹配。然而,替换基本上是电子邮件中的字符串替换,以个性化每个电子邮件的收件人,这些替换应用于电子邮件的每个收件人,而不是API调用。
SendGrid唯一参数
如果您使用的是JSON请求头的API库,则不必处理JSON请求头,只需将该库用作任何其他PHP对象即可。例如,如果您必须设置三个变量var1
、var2
、var3
,则可以是:
$Sendgrid -> setUniqueArguments(array(
'var1' => 'value1',
'var2' => 'value2',
'var3' => 'value3'
));
或此:
$Sendgrid -> addUniqueArgument('var1', 'value1');
$Sendgrid -> addUniqueArgument('var2', 'value2');
$Sendgrid -> addUniqueArgument('var3', 'value3');
不同之处在于,第一个选项setUniqueArguments
完全替换了您之前添加的任何其他变量,但第二个选项addUniqueArgument
将一个变量添加到现有变量中。
SendGrid替换
假设您正在使用他们的API库,并且您有两个收件人:bob@Example.com和alice@Example com,并且您需要在电子邮件中提到他们的名字。在本例中,您在电子邮件正文中使用占位符字符串,基本上是任何不会正常出现的内容。在我们的例子中,让我们假设它可能是:Hello <<Name>>
其中<<Name>>
是收件人名称的占位符。在这种情况下,您可以这样构造API调用(我省略了与电子邮件内容相关的部分,等等):
$Sendgrid -> addTo('bob@example.com');
$Sendgrid -> addTo('alice@example.com');
$Sendgrid -> addSubstitution('<<Name>>', array('Bob', 'Alice'));
addSubstituion
调用中的值必须与收件人列表的顺序相同。
相关文章