php SendGrid与单个电子邮件的独特参数

disho6za  于 2023-09-29  发布在  PHP
关注(0)|答案(2)|浏览(116)

我试图为每封电子邮件设置一个唯一参数的列表,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?)),它可以对我有很大的帮助。

zbdgwd5y

zbdgwd5y1#

我看到你先提到了唯一的论点,但你又提到了一个完全无关的问题。唯一参数应用于整个API调用,例如,这些参数可能包含系统中的批处理ID,以便您可以更轻松地将电子邮件事件与数据相匹配。然而,替换基本上是电子邮件中的字符串替换,以针对其收件人个性化每个电子邮件,并且那些应用于电子邮件的每个收件人而不是API调用。

Sendgrid唯一参数

如果你正在使用他们的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库,并且您有2个收件人,email protected(https://stackoverflow.com/cdn-cgi/l/email-protection)和alice@example com,并且您需要在电子邮件中提到他们的名字。在这种情况下,您在电子邮件的正文中使用占位符字符串,基本上是任何通常不会出现的内容。在我们的例子中,让我们假设它可能是:

Hello <<Name>>

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

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

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

cgyqldqp

cgyqldqp2#

2023更新

下面介绍如何使用其v7 PHP library设置新的custom_args

use SendGrid\Mail\Mail;

$email = new Mail();
$email->addCustomArg("var1", "value 1");
$email->addCustomArg("var2", "value 2");

相关问题