SendGrid 带有单独电子邮件的独特参数

问题描述 投票:0回答:2

我尝试为每封电子邮件设置一个唯一参数列表,SMTP API 的官方参考非常简短地描述了此功能,这里

我正在使用的 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 ?),这对我来说是一个很大的帮助。

php sendgrid
2个回答
5
投票

我看到你首先提到了独特的论点,然后你提到了完全不相关的替换。唯一参数适用于整个 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
向现有变量添加了一个变量。

发送网格替换

假设您正在使用他们的 API 库,并且您有 2 个收件人,[email protected] 和 alice@example com,您需要在电子邮件中提及他们的名字。在这种情况下,您在电子邮件正文中使用占位符字符串,基本上是任何正常情况下不会出现的内容。在我们的例子中,我们假设它可能是:

Hello <<Name>>

其中

<<Name>>
是收件人姓名的占位符。在这种情况下,您可以这样构建 API 调用(我省略了与电子邮件内容等相关的部分):

$Sendgrid -> addTo('[email protected]');
$Sendgrid -> addTo('[email protected]');
$Sendgrid -> addSubstitution('<<Name>>', array('Bob', 'Alice'));

addSubstituion
调用中的值必须与收件人列表的顺序相同。


0
投票

2023 更新

以下是如何使用他们的 v7 PHP 库设置新的

custom_args

use SendGrid\Mail\Mail;

$email = new Mail();
$email->addCustomArg("var1", "value 1");
$email->addCustomArg("var2", "value 2");
© www.soinside.com 2019 - 2024. All rights reserved.