動的テンプレートを使用してメールの件名を追加しようとしましたが、機能しません。 これはすでに既知のバグですか? この問題の回避策を提案できますか?
テンプレートコード:
<html>
<head>
<title></title>
</head>
<body>
<p> Hello <span>{{test_name}}!</span></p>
</body>
</html>
メール送信機能:
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(settings.sendgrid.api_key);
sgMail.setSubstitutionWrappers('{{', '}}');
const msg = {
to: '[email protected]',
from: settings.sendgrid.from,
subject: 'Test Subject',
templateId: settings.sendgrid.template_id,
dynamic_template_data: {
test_name: 'Testing Name'
},
};
sgMail.send(msg);
#834と同じ
@ 10kc-なるほどザック。 それは既知の問題です。
ちなみに、それを修正するためにどのような回避策をしましたか?
@ nyel-dev SendGridWebサイトでのテンプレートの件名の設定は機能します。 問題は、動的テンプレートをトリガーするときに、SendGridのAPIではテンプレートを提供できないように見えることです。
こんにちは@ nyel-dev、
トランザクションテンプレートでは、件名を{{subject}}に設定し、コードでdata.subject
を"[TEST] My Email Subject"
設定すると思います。
それはあなたのために働きますか?
敬具、
エルマー
こんにちは@thinkingserious 、あなたが追加の洞察を持っているかもしれないことを願っています。
レガシーテンプレートからトランザクションテンプレートに移行していますが、トランザクションテンプレートのサブジェクトフィールドを{{subject}}
に置き換えた後でも、同じ問題が発生しています(sendgrid-nodejs v6.3.1、ノード:v8.11.4)。 setSubstitutionWrappers()
を介して置換ラッパーを明示的に設定しておらず、デフォルトのハンドルバーセットにフォールバックしただけです(ただし、テスト中にそれらも設定しようとしました)。
最初のテストケースではsubject
プロパティ(引用符や特殊文字なし)をmsg.subject
として、2番目のテストケースではmsg.dynamic_template_data.subject
として、両方で渡すことを確認しました私の3番目のテストケースに設定され、結果として受信された電子メールは、私が期待するように件名がまだ置き換えられていません。 メールの件名には「(件名なし)」と表示されます。
sendgridサイトでプレビューモードでテンプレート自体をテストし、テストデータを設定すると、期待どおりにテキストが置き換えられます。
どんな助けでもいただければ幸いです。 ありがとう!
*編集*
また、メッセージの本文の置換は、件名だけでなく、期待どおりに置き換えられることにも言及する必要があります。
@thinkingserious件名が例と同じメールに表示されない
to: "[email protected]",
from: "[email protected]",
subject: "Hello world",
text: "Hello plain world!",
html: "<p>Hello HTML world!</p>",
templateId: "d-xxxx",
dynamic_template_data: {
subject: "Testing Templates & Stuff",
name: 'Some "Testing" One',
city: "<b>Denver<b>"
}
こんにちは@jlouie 、
これが完全な例です。 お役に立てば幸いです。
敬具、
エルマー
@thinkingserious :残念ながら、そうではありません。 @nicholasessのように、送受信される電子メールに件名が表示されないままです。
こんにちは@jlouie 、
あなたのサブジェクトエリアはUIでこのように見えますか?
敬具、
エルマー
ちなみに、SendgridテンプレートインターフェースでSet Subjectを使用することで、この問題を解決することができました。 ありがとう@thinkingserious
コードやテストデータなどのメニューに変更することをお勧めします。
設定がある場所は隠されています:/
フィードバック@nicholasessをありがとう! それをデザインチームに渡します。
私は同じ問題に遭遇し、この回避策に頼らなければなりませんでしたが、問題をふるいにかけることなしにはうまくいきませんでした。
これは、API呼び出しで件名を設定するとドキュメントに記載されているため、非常に直感的ではありません(メッセージに対してグローバルに設定し、パーソナライズでオーバーライドする方法について詳しく説明していますが、この回避策では明らかに失われます)。
また、「管理ページで設定されたデフォルトのサブジェクト。API呼び出しでオーバーライドできます」機能も失われます。 いいえ、回避策では、影響を受けるテンプレートの件名を常に指定する必要があります。
({{}}補間でデフォルトを設定する方法がない限り、ドキュメントを確認します。これまでに見つけたのは、ダッシュを使用した補間方法に関するもので、まったく慣れていません。)
@thinkingserious
この問題が解決されたのはなぜですか? 修正されていません。
奇妙に見えるかもしれませんが、同じ画面でウィンドウやタブを開いていないことを確認してください。 Sendgrid uiには自動保存機能があり、以前に保存したすべてのデータを書き換えることができます。
サブジェクトでの使用{{subject}}
他の変数と同じように変数として送信し、
このように動作します。
私はドキュメントをフォローしていて、何か間違ったことをしたと思ったので、この問題に長い間立ち往生していました。 従来のテンプレートから移行しているので、APIは同じままだと思っていたのですが、突然期待どおりに機能しなくなって驚いたのです。
この変更を適切に反映するために、ドキュメントをv3/mail/send
に更新する計画はありますか?
この問題を解決できた唯一の方法は、_triple-stash_を使用することでした。
{{{ subject }}}
この記事によるとhttps://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md
対象フィールドで二重中括弧の代わりに三重中括弧を使用して確認できます
件名にトリプルカーリーまたはその他のコードを保存すると、数分後にコードが自動的に標準の<%subject%>に戻ります。
他の誰かが同じ問題を抱えていますか?
他の誰かが同じ問題を抱えていますか?
2つのウィンドウを開いたときにこのようなものを見たことがあります。 SendGridは自動保存するため、2つのウィンドウを開いている場合、それらは互いにキャンセルされます。
それが私のために働いた方法:
SendGrid UIの件名フィールドでの使用: {{{subject}}}
message.dynamic_template_data
"subject": "test"
を送信します
提案:皆さんは本当にあなたのドキュメントに取り組むべきです。 私は本当にそれらがとても散らばっていて、断片が時代遅れであることを意味します。
トリプルブラケットはまだ機能しています。それがまだ公式の解決策であるかどうかを確認しています。
ありがとう!
@tcukanootはい。
再度発行してください! ドキュメントはまだ正しくなく、リクエストのトップレベルにsubject
を設定することを提案しています。 ただし、 dynamic_template_data
含める必要があり、テンプレートの件名は{{subject}}
またはその他の動的キーとして設定する必要があります。 これは2018年からオープンしており、それ以降、ドキュメントに変更はありません。
置換またはdynamic_template_dataを使用しようとすると、サーバーから400リクエストエラーが発生します
ドキュメントを修正してください。 dynamic_template_dateは、 https://github.com/sendgrid/sendgrid-python/blob/main/use_cases/kitchen_sink.mdとv3のドキュメントに基づいて有効にすべきではありません
それでも人々はそれが彼らのために働くと報告しています
どうしたの? 🤔
それが私のために働いた方法:
SendGrid UIの件名フィールドでの使用:
{{{subject}}}
message.dynamic_template_data
"subject": "test"
を送信します提案:皆さんは本当にあなたのドキュメントに取り組むべきです。 私は本当にそれらがとても散らばっていて、断片が時代遅れであることを意味します。
PHPでそれを行う方法。 コードを共有してください!
現在、ドキュメントは、件名をトップレベルのパラメータとして送信することを提案しているだけで間違っていますか?
それが私のために働いた方法:
SendGrid UIの件名フィールドでの使用:
{{{subject}}}
message.dynamic_template_data
"subject": "test"
を送信します提案:皆さんは本当にあなたのドキュメントに取り組むべきです。 私は本当にそれらがとても散らばっていて、断片が時代遅れであることを意味します。
これは私のために働いた! ドキュメントは次のようになります。
const msg = {
to: toEmail,
from: "email",
templateId: "tempateId",
dynamic_template_data: {
subject: "subjectHere",
},
};
sendGridEmail
.send(msg)
.then(() => console.log("email sent"))
.catch((error) => console.error(error.toString()))
最も参考になるコメント
こんにちは@jlouie 、
あなたのサブジェクトエリアはUIでこのように見えますか?
敬具、
エルマー