单独电子邮件的SendGrid唯一参数

2022-05-30 00:00:00 sendgrid php

我尝试为每个电子邮件设置一个唯一参数列表,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对象即可。例如,如果您必须设置三个变量var1var2var3,则可以是:

$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调用中的值必须与收件人列表的顺序相同。

相关文章