このライブラリを使用する場合、置換は機能しません。 カールを使用すると機能します。
`'use strict';
var config = {
apiKey: '',
from: '',
to: '',
templateId: ''
}
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(config.apiKey);
async function sendTest() {
var newMsg = {
"from": {
"name": "Test Script",
"email": config.from
},
"personalizations": [{
"to": config.to,
"substitutions": {
"-firstName-": "Maciejs",
"%firstName%": "Maciej",
"-first_name": "Maciej",
"%first_name%": "Maciej"
}
}],
"subject": "test subject",
"content": [{
"type": "text/plain",
"value": "Hello, %firstName%!"
},
{
"type": "text/html",
"value": "<html><p>Hello, %firstName%!</html> "
}],
"template_id": config.templateId
}
await sgMail.send(newMsg);
}
sendTest();`
SendGridエディターのテンプレートのスクリーンショットと受け取ったメールも添付しています
@MaciejKrawczyk setSubstitutionWrapper
を使用して、 substitutions
からラッパーを省略してみましたか?
例:
sgMail.setSubstitutionWrappers('-', '-');
"substitutions": {
"firstName": "Maciejs"
}
この方法で一度に複数のラッパーを実行する方法はわかりませんが、substitution属性でラッパーを指定しないことで、このバージョンでサブを機能させることができました。 私の潜水艦はemailOptions.substitutions = {}
emailOptions.substitutions.CLIENT_NAME = myClientName
できます。 ありがとうございました!
@kmcurryを助けるために飛び込んでくれてありがとう!
@MaciejKrawczykを稼働させていただき、ありがとうございます。
これは間違いなくREADMEに入れる必要があります! これを理解するのに2時間かかります!
@LASkuma 、
それは良くないね :(
このドキュメントは役に立ちますか? もしそうなら、あなたが最初に助けを求めた場所を教えていただければ、そこに明確なリンクがあることを確認できますか?
ありがとう!
敬具、
エルマー
@thinkingseriousはい。 このドキュメントは大いに役立ちました。 ただし、置換キーにラッパーを含める必要がある公式Webサイトから来たので、ユースケースにはあまり注意を払いませんでした。
こんにちは@LASkuma 、
公式サイトから来たとおっしゃる場合、どのURLを参照しているのか教えていただけますか? ありがとう!
こんにちは@thinkingserious 、
私はこのページを参照していました。 試してみるセクションでも、ラッパーが含まれている置換キーがあります。 ドキュメントを読んだ後、Nodeライブラリは当然ドキュメントと一致していると思いました。
ありがとう@LASkuma!
それは本当に役立つフィードバックです。
しかし、私は解決策についてはよくわかりません。 これらのドキュメントは、APIを直接操作するのではなく、ヘルパーライブラリの1つを使用することを希望するユーザー向けです。
先ほど、このドキュメントをREADMEに含める必要があるとおっしゃいました。 ここのことですか? そこで、置換ユースケースを具体的に呼び出す必要がありますか?
よろしくお願いします!
敬具、
エルマー
これは間違いなくreadmeにあるはずです。 私はすべてを試し、SendGrid apiリファレンスのすべてのドキュメントを読み、GitHubにあるすべて(私は思った)、サポートに連絡し、 @ kmcurryがなければ、独自のapiラッパーを作成します。はるかに簡単で混乱が少ないと思います。ヘルパーライブラリがAPI自体とまったく同じように機能するかどうか(スレッドの最初にある私のコードを参照してください)。
ありがとう@MaciejKrawczyk 、
これは非常に良いフィードバックであり、私はこれをチームのバックログに追加して、より深く掘り下げました。 このスレッドの更新を提供します。
ありがとう!
敬具、
エルマー
これは行われますか? 私は同じ問題を抱えています。
こんにちは@sriharrsha 、
@kmcurryの提案を試し
未だに。 動作するかどうかはすぐに更新します。
返事が遅れて申し訳ありません。
昨日私と同じように必死になっているすべての人に:v3 APIでは、 substitutions
代わりにdynamic_template_data
を使用する必要がありますが、これはまだどこにも文書化されていません!
次に使う{{var_name}}
メールテンプレート内とdynamic_template_data: { var_name: "var_value" }
API呼び出しでを。
@tkafkaなんてこった! この男に感謝します、過去2日間これで私の髪を抜いてきました。
@tkafkaどうもありがとう! これはとてもイライラします! 私の一日の3時間かかりました...
誰かが同じものを探している場合のコード全体を次に示します。
var sendgrid = require('@sendgrid/mail');
sendgrid.setApiKey(env.sendgridApiKey);
sendgrid.setSubstitutionWrappers('{{', '}}');
var newMsg = {
"from": {
"name": "Your Company",
"email": env.businessEmail
},
"personalizations": [{
"to": order.email,
"dynamic_template_data": {"order_id": "1234", "first_name": "Max", "last_name": "Mustermann"}
}],
"subject": "test subject",
"content": [{
"type": "text/plain",
"value": "Hello, {{firstName}}!"
},
{
"type": "text/html",
"value": "<html><p>Hello, {{'firstName}}!</html> "
}],
"template_id": env.sendgridOrderConfirmationTemplateId
};
console.log("Sending confirmation email...")
return sendgrid.send(newMsg);
sendgridのドキュメントは、控えめに言っても恐ろしいものです。
ああ、 dynamic_template_data
。 私はあなたの小さなパズルを解きました! :スマイル:
他のtypescriptユーザーの場合-ファイルmail.d.ts
作成します:
import {MailData} from "@sendgrid/helpers/classes/mail";
// see https://github.com/sendgrid/sendgrid-nodejs/issues/638
declare module "@sendgrid/helpers/classes/mail" {
export interface MailData {
dynamic_template_data: {[key: string]: string};
}
}
ありがとう@xduseko !
最も参考になるコメント
昨日私と同じように必死になっているすべての人に:v3 APIでは、
substitutions
代わりにdynamic_template_data
を使用する必要がありますが、これはまだどこにも文書化されていません!次に使う
{{var_name}}
メールテンプレート内とdynamic_template_data: { var_name: "var_value" }
API呼び出しでを。