Sendgrid-nodejs: 置換が機能していません

作成日 2017年09月07日  ·  17コメント  ·  ソース: sendgrid/sendgrid-nodejs

問題の概要

sendgrid 2.0.0から@sendgrid/mail 6.1.2に移行しましたが、置換が機能しなくなりました

再現する手順

SendgridService.prototype.sendTestEmail = function () {
  var text = 'Hi %DISPLAY_NAME%\n\n'
  const msg = {
    to: '[email protected]',
    subject: 'Test Email',
    from: {email: '[email protected]', name: 'Test'},
    text: text,
    substitutions: {
      "%DISPLAY_NAME%": 'Test'
    }
  }
  return sendgrid.send(msg)
}

技術的な詳細:

  • sendgrid-nodejsバージョン:マスター(最新のコミット:[コミット番号])
  • Node.jsバージョン:8.4.0
help wanted question

最も参考になるコメント

@sydneyhenrard

この問題の解決を支援するために、感謝の印としていくつかの盗品

SendGridをサポートしていただきありがとうございます。

敬具、

エルマー

全てのコメント17件

こんにちは@sydneyhenrard

これが完全な例です。

substitutionWrappersを設定する必要があるようです。 あなたの場合、それは%ます。 次に、 substitutionsオブジェクトで、 %文字を省略します。

敬具、

エルマー

変数に関する規則はありますか?

SendgridService.prototype.sendTestEmail = function () {
  var text = 'Hi %DISPLAY_NAME% - %displayname%\n\n'
  const msg = {
    to: '[email protected]',
    subject: 'Test Email',
    from: {email: '[email protected]', name: 'Test'},
    text: text,
    substitutionWrappers: ['%', '%'],
    substitutions: {
      DISPLAY_NAME: 'Test',
      displayname: 'Test'
    }
  }
  return sendgrid.send(msg)
}

受信したメール:

Hi %DISPLAY_NAME% – Test

こんにちは@sydneyhenrard

この問題を再現することができました。 修正のためにこれをバックログに追加しました。 n個の置換が与えられたように見えますが、置換0が正しく設定されていません。

敬具、

エルマー

@thinkingseriousこれはあなたの側にありますか、それともNode SDKの問題ですか?

これはSDKの問題です。 問題が正確に何であるかはよくわかりません。 トラブルシューティングに役立つペイロードを調べる予定です。

キャメルケース変数を使用すれば、置換0でも問題ありません。

ありがとう@sydneyhenrard

それは根本原因に早く到達するのに役立つはずです:)

私は問題が何であるかを知っているかもしれないと思います、私に調査させてください。

442はこれを修正する必要があります👍

v6.1.3としてマージされました。@ adamreisnzに感謝します。

@sydneyhenrard

この問題の解決を支援するために、感謝の印としていくつかの盗品

SendGridをサポートしていただきありがとうございます。

敬具、

エルマー

2018年1月に同じ問題が発生しました。 単一の単語変数が機能していなかったため、置換変数を%companyname%から%company_name%に変更しました。 すぐに修正されました。

こんにちは@greglbyv

どのバージョンのSDKを使用していますか? ありがとう!

敬具、

エルマー

デザインビルドテンプレートを使用する場合、置換は機能するはずですか? テンプレートを手作業で作成した場合にのみ機能させることができ、デザインツールで作成したものは機能しません。

@airstofather

あなたを助けるために、私はさらに詳細が必要になります。 1)どのテンプレートを参照していますか? 2)サンプルコードを提供していただけますか? テンプレートHTMLとNode.jsコードの両方。 ありがとうございました!

また、別の問題を開くのが最善かもしれません。 ありがとう!

敬具、

エルマー

@thinkingserious

以前のコメントは無視してください。 あなたの返事の後、私は新鮮な目でそれを見に戻りました、そしてそれは私が最初に捕らえなかった問題を引き起こしていた補間された変数の余分なスペースでした。

すべてが宣伝どおりに機能しています。 ありがとうございました。

@thinkingserious私はすべて、キャメルケース、アンダースコアを試しました。 それでも変数は入力されません。sendgridUIを介してテストを実行し、変数を渡すと、正常に機能します。 Firebaseクラウド機能では機能しません。 これが私のコードです

「@sendgrid / mail」を使用しています:「^ 6.3.1」

const msgbody = {
          to: userData.email,
          from: '[email protected]',
          subject: 'Registration Complete',
          templateId: 'd-dffc1e7c8a4a4ed5a4384eded1701f65',
          substitutionWrappers: ['{{', '}}'],
          substitutions: {
            first_name: userData.firstName
          }
        }
このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

nicoasp picture nicoasp  ·  3コメント

murphman300 picture murphman300  ·  4コメント

thinkingserious picture thinkingserious  ·  4コメント

thinkingserious picture thinkingserious  ·  4コメント

polkhovsky picture polkhovsky  ·  3コメント