Sendgrid-nodejs: テンプレートmail.send()で件名が変更されない

作成日 2018年08月01日  ·  26コメント  ·  ソース: sendgrid/sendgrid-nodejs

問題の概要

メールで件名が変更されない

再現する手順

sgMail.send(seeBellow)を呼び出す

const seeBellow = {
  "from": "[email protected]",
  "templateId": "d-1da76d64a1bd4c8b87c035ccaa3f6cfb",
  "dynamicTemplateData": {
    "username": "[email protected]",
    "giftcardAmount": "$45",
    "validUntil": "Aug 2019",
    "receiptNumber": 111299,
    "ewayTransactionId": "00003100003509951fac7d25e8dd96e0"
  },
  "personalizations": [
    {
      "to": "[email protected]",
      "subject": "Somebody has sent you a Gift Card"
    }
  ],
  "isMultiple": false,
  "substitutionWrappers": [
    "{{",
    "}}"
  ]
}

その結果、次の投稿になります

{
  "method": "POST",
  "url": "/v3/mail/send",
  "body": {
    "from": {
      "email": "[email protected]"
    },
    "personalizations": [
      {
        "to": [
          {
            "email": "[email protected]"
          }
        ],
        "subject": "Somebody has sent you a Gift Card",
        "dynamic_template_data": {
          "username": "[email protected]",
          "giftcardAmount": "$45",
          "validUntil": "Aug 2019",
          "receiptNumber": 111299,
          "ewayTransactionId": "00003100003509951fac7d25e8dd96e0"
        }
      }
    ],
    "template_id": "d-1da76d64a1bd4c8b87c035ccaa3f6cfb"
  }
}

また、パーソナライズを使用する代わりに、一連のメッセージを介して2つの電子メールを送信しようとしましたが、これも機能しません。

最後に、fromフィールドの横に件名を配置しようとしましたが、まだ機能しませんでした

技術的な詳細:

  • ロックファイルのsendgridバージョン:
    "@sendgrid/mail": {
      "version": "6.3.1",
      "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-6.3.1.tgz",
      "integrity": "sha512-5zIeAV9iU+0hQkrOQ/D4RB2MfpK+lNbOortIfQdCh95aMDF/TRc9WB8FGNhmQrx9YMuJTms5eiBklF0Fi/dbVg==",
      "requires": {
        "@sendgrid/client": "6.3.0",
        "@sendgrid/helpers": "6.3.0"
      }
    },
  • Node.jsバージョン:8.11.1
unknown or a hacktoberfest help wanted bug

最も参考になるコメント

次のようになります。
"dynamic_template_data":{
「件名」:「あなたの件名」、
}、

https://sendgrid.com/dynamic_templatesにアクセス
TEMPLATESETTINGSに{{{subject}}}を追加します。

それは私のために働きます:+1:

全てのコメント26件

私が使用している回避策は、{{subject}}のようなSendGridのウェブインターフェースにサブジェクトを追加してから、サブジェクト変数をdynamic_template_dataに渡すことです。 テンプレート変数はサブジェクトで機能するようですので、基本的にはプログラムでサブジェクト全体をそのように渡すことができます。

こんにちは@falconmick

@ wbw20の回避策は機能します。根本原因を調査するときに、それを試してください。

@ wbw20

助けてくれてありがとう! ソリューションに追加されなかったため、画像を編集しました。 あなたの意図がわからない。

敬具、

エルマー

FWIW、Rubyライブラリでも同様の動作が見られます。

電子メールオブジェクトに件名を設定しても、Webツールのテンプレートで定義されているものを上書きすることはできません。 それをハンドルバーにして、各パーソナライズに追加する必要があります。

私もこの問題に直面しています。 なぜ失敗するのかを正確に特定するのに苦労しています。

回避策は実行可能に見えますが、他のすべてのSendGrid電子メールの設定に反するため残念です。

次のようになります。
"dynamic_template_data":{
「件名」:「あなたの件名」、
}、

https://sendgrid.com/dynamic_templatesにアクセス
TEMPLATESETTINGSに{{{subject}}}を追加します。

それは私のために働きます:+1:

@atarabbiのソリューションはあなたが必要とするものでなければなりません。 それでも問題が発生する場合は、このスレッドに引き続きコメントしてください。 ありがとう!

@atarabbiのソリューションはあなたが必要とするものでなければなりません。 それでも問題が発生する場合は、このスレッドに引き続きコメントしてください。 ありがとう!

しかし、それでも、ライブラリAPIがどのように文書化されているかによって、最終的には機能しなくなるのではないでしょうか。 物事が許す限り主題を設定することはまだ壊れているように見えますか?

ええ、件名を変更するためにドキュメントが提案している方法は機能していないようです。 これがdynamic_template_dataの問題にすぎないかどうかはわかりませんが、これも発生しています。

件名に動的テンプレートを使用してみますが、ドキュメントに驚くほど一貫性がありません

私がここのドキュメント@baugarten念のために言って

クライアントパッケージのdynamic_template_dataを文書化してい

また、最新のライブラリバージョンv6.3.1を使用していますか?

間違いなくこれを修正したいと思います、そして混乱をお詫びします!

FWIW Golangライブラリでもこの問題が発生していますが、API呼び出しからテンプレートの件名を上書きできません。 適切な回避策が見つからない場合は、そこでも問題を発生させます。

うーん、ドキュメントには、基本サブジェクトがパーソナライズサブジェクトによって上書きされると具体的に記載されていますが、これはサブジェクトをテンプレート化できることとはまったく同じではありません。

編集:特にあなた自身のライブラリが機能しないとき。 パーソナライズに件名を追加しますが、テンプレートには使用できません。 これが文書化された動作であると予想される場合、ライブラリはそれをdynamic_template_dataサブオブジェクトに追加する必要があります。

また、これに遭遇し、件名は上書きされていないようですが、回避策は使用できます。

'dynamic_template_data'にサブジェクトを残し、{{{subject}}}を使用してテンプレートでサブジェクトを参照することは実際に機能しているようです。 また、custom_argsが存在しないことに気づきました。 これは、置換とともに「dynamic_template_data」にマージされます。 残念ながら、ドキュメントはこれを教えていません。 たとえば、言語パラメータを渡したい場合は、「dynamic_template_data」でもこれを行います。

「dynamic_template_data」フィールドは機能しますが、文書化されていないようです: https

これはまだ問題です。 なぜこれが閉鎖されたのですか?

回避策は確実に機能しません。 同じ正確な件名を使用してループで最大30通の電子メールを送信すると、送信した件名のメールと(件名なし)のメールが届きます。

現在、APIを介してカスタムサブジェクトを確実に送信する方法はありますか?

@ deepai-orgここで最新のドキュメントを使用するのが最適です: https ://sendgrid.com/docs/API_Reference/api_v3.html

@vladkosarevハンドルバーでテンプレート化されたサブジェクト(https://github.com/sendgrid/sendgrid-nodejs/issues/713#issuecomment-443206995を参照)で同じ動的テンプレートを使用していて、リクエストペイロードに適切なものが含まれていると言っていますか?サブジェクトの動的テンプレートデータであり、サブジェクトを確実に使用していませんか? この場合、これはクライアント側のライブラリで対処できる/すべきではないため、サポートに連絡することをお勧めします。

@ childish-sambinoしばらくすると、すべてのメールの件名が実際に正しくなりました。 しばらくの間、何か非同期が発生しているようで、一部のメールは古いメールテンプレートと新しいメールテンプレートを取得します。

これはhttps://sendgrid.com/docs/API_Reference/api_v3.html正しいドキュメントですか? そのドキュメントで説明されているように件名を送信することは機能しないと確信しています。 これまでのところ、それが機能する唯一の方法は、このチケットに記載されている回避策でした。

@vladkosarevこれらは正しいドキュメントです。 動的テンプレートを使用している場合、この号で概説されているように、件名を電子メールごとに変更するには、件名をテンプレート化して動的テンプレートデータとして渡す必要があります。 テンプレートを使用していない場合は、メール送信ペイロードで提供される件名が使用されます。

すべてのメールの件名を正しくするために同期が必要な理由については、サポートにお問い合わせください。

@ childish-sambinoドキュメントのどこで動的テンプレートでサブジェクトを使用する方法を説明しているのか教えていただけますか? 私はまだその新しいリンクのどこにもそれを見つけることができません。 ありがとう!

@vladkosarevを正しく

image

@aroachに感謝しますが、githubのコメントではなく、ドキュメントでそれを確認することに興味があります。 ちなみに、{{}}を試しても機能しませんでしたが、トリプルブラケット{{{}}}のみが機能しました(以前と同じ非同期の問題である可能性があります)。

@vladkosarevここで言及されているようです: https//sendgrid.com/docs/ui/sending-email/how-to-send-an-email-with-dynamic-transactional-templates/

このハンドルバーテンプレートは、テンプレートのテキスト、html、および件名で使用できます。

@aroachありがとうございます。 私はさらにテストを行いましたが、サブジェクトが実際にテンプレートに「適用」するのに時間がかかるため、テスト中(テンプレートの編集/送信)では機能していないように見えます。 10分待つと、実際に適用され、意図したとおりに機能します。 テンプレートの更新は(少なくとも件名については)リアルタイムではなく、テストを行うには少し待たなければならないことを文書化するためにSGに連絡するかもしれません。 ありがとうございました。

@Whatthefoxsaysはこれを追跡したり、適切な編集を行ったりできるはずです。 👋

@aroach私がおそらく言及しなければならないことの1つは、電子メールを送信するための2つのIPがあるということです。 SGの内部動作はわかりませんが、それが問題の原因である可能性があります(2番目のノードに伝播するのに時間がかかりますか?)。

このページは役に立ちましたか?
0 / 5 - 0 評価