我尝试为每封电子邮件设置一个唯一参数列表,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;
}
所以实际上,我的实现基于明显的逻辑结论,并决定为头的unique-arguments部分创建多维json,与替换值数组一对一,与收件人数组一致,但是遗憾的是,这不起作用,导致无效的XSMTP API标头错误被退回到我的电子邮件中.
如果有人之前使用过这个功能,并且可以简单地指导我如何正确使用它(也许在每个addTo之后调用addUniqueArgument?),对我来说这可能是一个很大的帮助. 解决方法: 我看到你首先提到了独特的论点,但后来你提到了一个完全不相关的替代品.唯一参数作为一个整体应用于API调用,例如,那些可能包含系统中的批处理ID,以便您可以更轻松地将电子邮件事件与数据进行匹配.然而,替换基本上是电子邮件中的字符串替换,以便为其收件人个性化每个电子邮件,并且这些替换适用于电子邮件的每个收件人而不是API调用.
Sendgrid独特的参数
如果您正在使用其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库,并且您有2个收件人,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调用中的值必须与收件人列表的顺序相同. 来源:http://www./content-1-199351.html
|