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

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

我试图为每封电子邮件设置一个唯一参数的列表,SMTP API的官方参考非常简单地描述了这个功能,here
我正在使用的SendGrid PHP库的API文档也没有多大帮助:

  1. /**
  2. * setUniqueArguments
  3. * Set a list of unique arguments, to be used for tracking purposes
  4. * @param array $key_value_pairs - list of unique arguments
  5. */
  6. public function setUniqueArguments(array $key_value_pairs)
  7. {
  8. $this->header_list['unique_args'] = $key_value_pairs;
  9. return $this;
  10. }
  11. /**
  12. * addUniqueArgument
  13. * Set a key/value pair of unique arguments, to be used for tracking purposes
  14. * @param string $key - key
  15. * @param string $value - value
  16. */
  17. public function addUniqueArgument($key, $value)
  18. {
  19. $this->header_list['unique_args'][$key] = $value;
  20. return $this;
  21. }

因此,事实上,我的实现基于明显的逻辑结论,并决定为头部的唯一参数部分创建多维json,与替换值数组和收件人数组一一对应,但不幸的是,这不起作用,并导致无效的XSMTP API头部错误被反弹回我的电子邮件。
如果有人以前使用过这个功能,并且可以简要地指导我如何正确使用它(也许在每个addTo之后调用addUniqueArgument?)),它可以对我有很大的帮助。

zbdgwd5y

zbdgwd5y1#

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

Sendgrid唯一参数

如果你正在使用他们的API库,你不必弄混JSON请求头,只要像其他PHP对象一样使用这个库就可以了。例如,如果你必须设置三个变量,var1var2var3,它要么是这样的:

  1. $Sendgrid -> setUniqueArguments(array(
  2. 'var1' => 'value1',
  3. 'var2' => 'value2',
  4. 'var3' => 'value3'
  5. ));

或者这个

  1. $Sendgrid -> addUniqueArgument('var1', 'value1');
  2. $Sendgrid -> addUniqueArgument('var2', 'value2');
  3. $Sendgrid -> addUniqueArgument('var3', 'value3');

不同之处在于,第一个选项setUniqueArguments完全替换了之前添加的任何其他变量,而第二个选项addUniqueArgument向现有变量添加了一个变量。

Sendgrid替换

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

  1. Hello <<Name>>

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

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

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

展开查看全部
cgyqldqp

cgyqldqp2#

2023更新

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

  1. use SendGrid\Mail\Mail;
  2. $email = new Mail();
  3. $email->addCustomArg("var1", "value 1");
  4. $email->addCustomArg("var2", "value 2");

相关问题