å€æŽãå ããã«ããã©ã³ã¶ã¯ã·ã§ã³é»åã¡ãŒã«ã§äŸã«åŸããŸããã 眮æã¿ã°ã¯åé€ãããŸãããããã¹ãã¯æ¿å ¥ãããŸããã ãããç§ãåãåãé»åã¡ãŒã«ã®ã¹ã¯ãªãŒã³ã·ã§ããã§ãïŒ
test.js
ãç·šéããŠãAPIããŒãã¡ãŒã«ã¢ãã¬ã¹ãããã³äžèšã§äœæããtemplateId
ãæ¿å
¥ããŸããnode test.js
å®è¡ããŸããããã«ã¡ã¯@panayi ã
ãã§ãã¯ããããã€ãã®äºæïŒ
HTMLãã©ã®ããã«èŠããããå ±æã§ããŸããïŒ
ããããšãïŒ
æ¬å ·ã
ãšã«ããŒ
ããã«ã¡ã¯ã @ thinkingserious ã @ panayiãè¿°ã¹ãã®ãšåãåé¡ãåçŸããããšãã§ããŸããã
ç§ã®HTMLã³ãŒãã¯æ¬¡ã®ããã«ãªããŸã
ããã«ã¡ã¯first_nameïŒåŸæ¥å¡ïŒemployee_idïŒ
ããã€ãã®HTMLã³ãŒã
ã³ãŒã
sgMail.setApiKey('apikey');
sgMail.setSubstitutionWrappers('{{', '}}'); // Triied sgMail.setSubstitutionWrappers('-', '-'); as well`
const msg = {
to: '[email protected]',
from: '[email protected]',
subject: 'Hello world',
text: 'Hello plain world!',
html: 'Hello HTML world!',
templateId: 'template-id',
substitutions: {
first_name: 'Tejas',
employee_id: 'emp123',
},
};
sgMail.send(msg);
æ³šïŒ substitutionWrappers: ['{{', '}}']
ã䜿çšããŠã¿ãŸãã
msgå
ã§ãããéããããŸããã
æè¡çãªè©³çŽ°ïŒ
ç§ã¯ãã®åé¡ã«å€ãã®æéãè²»ãããŠããã®ã§ããã«ã/ä¿®æ£ã«æè¬ããŸã
ããã«ã¡ã¯@tjstlekr ã
HTMLã³ãŒãã§ã first_name
ã{{first_name}}
ã employee_id
ã{{employee_id}}
ã
ããããšãïŒ
æ¬å ·ã
ãšã«ããŒ
ããã«ã¡ã¯@thinkingserious ã
HTMLã³ãŒããšã¯ããã³ãã¬ãŒãã³ãŒãã®ããšã§ããïŒ
ããã§ãªã¯ãšã¹ãæ¬æå
ã§æå®ããå Žåã«çœ®æã¿ã°ãæ£åžžã«æ©èœããã®ã¯ãªãã§ããããã ããããŒãžã§äºåå®çŸ©ãããäŸã䜿çšããå Žåã¯æ©èœããŸããã
ããããšãïŒ
ã¯ã@tjstlekr ãç§ã¯ãã®äŸã§èª¬æãããŠãããã³ãã¬ãŒãã³ãŒããæå³ããŸãã
å ·äœçãªäŸããªããã°ã2çªç®ã®è³ªåã«çããããšã¯ã§ããŸããã ïŒäŸïŒãªã¯ãšã¹ãæ¬æãšãã³ãã¬ãŒãã³ãŒãïŒã
æ¬å ·ã
ãšã«ããŒ
æ²ããããšã«ïŒ ãã³ãã¬ãŒãã³ãŒãã«ã¢ã¯ã»ã¹ã§ããŸããã ç§ã¯å¥ã®ããŒãžã§ã³ã«åºå·ããŸãã
ãšã«ããããããšã@thinkingserious
ãã£ãŠã¿ãŸããïŒ
substitutions: {
'first_name': 'Tejas',
'employee_id': 'emp123',
},
ã¯ãã @ thinkingseriousã¯ãããè©ŠããŸããã ç§ã次ã®æ¹æ³ãè©ŠããŸãã
substitutions: {
'-first_name-': 'Tejas',
'-employee_id-': 'emp123',
},
substitutions: {
'%first_name%': 'Tejas',
'%employee_id%': 'emp123',
},
substitutions: {
'=first_name=': 'Tejas',
'=employee_id'=: 'emp123',
},
@tjstlekr ã
ããªãã®è§£æ±ºçã¯ãHTMLãã³ãã¬ãŒãã³ãŒããå€æŽããŠå€æ°ã眮ææåã§ã©ããã§ãã人ãååŸããããšã ãšæããŸãã
æ¬å ·ã
ãšã«ããŒ
@thinkingseriousã¯æ£ããã§ãã ãã³ãã¬ãŒãå€æ°ã¯ãäºéè§ãã£ã{{name}}ã§å²ãå¿ èŠããããŸãã ããããªããšãSendGridã¯éä¿¡ãã眮æãã©ãã«ãããããããããããŸããã
å€æ°ã«ã¯æ¬åœã«äºéè§ãã£ããå¿
èŠã§ããïŒ å
ã«é²ãã§è©ŠããŠã¿ãŸãããåã人ã«ããå¥ã®æçš¿ã§ãäºéæ¬åŒ§ã§ã¯ãªãããã·ã¥ã§çœ®æãæ©èœããŠããããšã瀺ãããŸããã
ããã«ã¡ã¯@tetreault ã
ããã©ã«ãã§ã¯ãäºéè§ãã£ãã䜿çšããŸãã setSubstitutionWrappers
䜿çšãããšããã¢ã®ããã«ããããå€æŽã§ããŸãã
ããããšãïŒ
æ¬å ·ã
ãšã«ããŒ
@panayiãšåãåé¡ãçºçã
ãã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒãã®ãµã³ãã«ã«åŸããŸããã 眮æã©ãããŒãèšå®ãããã³ãã¬ãŒãã§çœ®æãäºéæ¬åŒ§ã§å²ã¿ãŸããã ããããç§ãåãåã£ãé»åã¡ãŒã«ã¯ãç§ãæäŸãããã®ã«çœ®ãæããããšãªãããã¹ãŠã®çœ®æãåé€ããŸããã
ãã³ãã¬ãŒãã«ã¯ãã³ãŒããšãã£ã¿ãšãã¶ã€ã³ãšãã£ã¿ã®äž¡æ¹ãè©ŠããŠã¿ãŸããã
æè¡çãªè©³çŽ°ïŒ
ããããšãïŒ
ããã«ã¡ã¯@nrator ã
眮æã空çœã®æååã«çœ®ãæããããå Žåã¯ãç¹°ãè¿ãåŠçããŠããå€æ°ã空ã§ãªãããšãå確èªããŸãã ãããã空ã§ãªãããšã確èªããå Žåãã³ãŒãã®æçãé¢é£ããHTMLãšäžç·ã«å ±æããŠãåçŸã§ããããã«ããŠãã ããã
ããããšãïŒ
æ¬å ·ã
ãšã«ããŒ
ããã«ã¡ã¯@thinkingserious
ç§ã¯å€æ°ã§ã¯ãªãæååã䜿çšããŠããã®ã§ããããã¯ç©ºã§ã¯ãããŸããã 以äžã¯ãã³ãŒãã¹ãããããHTMLãããã³ååŸããçµæã§ãã
ã³ãŒã
const sgMail = require("@sendgrid/mail");
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
sgMail.setSubstitutionWrappers("{{", "}}"); // Configure the substitution tag wrappers globally
const msg = {
from: "[email protected]", // my personal email
to: "[email protected]", // my another personal email
subject: "Hello world",
text: "Hello plain world!",
html: "<p>Hello HTML world!</p>",
templateId: "d-27e7d954368c46519eddc806e5cf8156",
substitutions: {
name: "Some One",
city: "Denver"
}
};
sgMail.send(msg).catch(err => console.error(err.message));
HTMLãã³ãã¬ãŒã
<html>
<head>
<title></title>
</head>
<body>
Hello {{name}},
<br /><br/>
I'm glad you are trying out the template feature!
<br /><br/>
<%body%>
<br /><br/>
I hope you are having a great day in {{city}} :)
<br /><br/>
</body>
</html>
åãåã£ãã¡ãŒã«
Hello ,
I'm glad you are trying out the template feature!
<%body%>
I hope you are having a great day in :)
æè¡çãªè©³çŽ°
sendgrid-nodejsããŒãžã§ã³ïŒ@ sendgrid / [email protected]
Node.jsããŒãžã§ã³ïŒ8.11.2
å®ãããé¡ãããŸãã
ãžã§ã€ãœã³
ããã«ã¡ã¯ç§ã¯ãã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒãã§åãåé¡ãæ±ããŠããŸãã å€æ°ã¯ååŸãããŸããã ãã¹ãããŒã¿ã䜿çšããŠSGããã·ã¥ããŒãã§ãã³ãã¬ãŒãããã¬ãã¥ãŒãããšããã¹ãŠãæ£ããèŠããŸãã
é»åã¡ãŒã«ã¯ãå€æ°å€ãæ¬ èœããŠããããšãé€ããŠãæ£ãããã³ãã¬ãŒãã䜿çšããŠé©åãªäººã«éä¿¡ãããŸãã
2æ¥åã«ã¬ã¬ã·ãŒãã³ãã¬ãŒããäœæããŸããããããã¯æ£åžžã«æ©èœããä»æ¥ã¯æ°ãããã³ãã¬ãŒãã«åãæ¿ããŸãã
ãã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒãã§ãããæ©èœããŸããã å€ãã¬ã¬ã·ãŒãã³ãã¬ãŒããè€è£œããŸãã
æ£åžžã«åäœããŠããŸãã
"@ sendgrid / mail"ïŒ "6.3.1" | Node.js 8.10
ãããç§ã®ã³ãŒãã§ãïŒ
async function sendEmail({ email, firstName, password }) {
const msg = {
to: [{ email, firstName }],
from: {
email: "[email protected]",
name: "name"
},
asm: {
group_id: 1234
},
templateId: "d-64b15a042b2d41d7a4b5b6a4eea649c5",
substitutions: {
userName: firstName,
email,
password
}
}
try {
await sgMail.send(msg);
} catch(e){
e.message
}
};
ãããŠããã«htmlãã³ãã¬ãŒãããããŸãïŒ
<h3>Hi {{userName}},</h3>
<div><span style="font-size:16px;">Your account has been setup. To login please use</span></div>
<div><span style="font-size:16px;">the credentials below.</span></div>
<div> </div>
<div><span style="font-size:16px;"><strong>Email:</strong> {{email}}</span></div>
<div><strong><span style="font-size:16px;">Password: </span></strong><span style="color: rgb(0, 0, 0); font-family: arial; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400;">{{password}}</span></div>
<div><span style="font-weight: 600; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-family: arial; font-size: 14px; color: rgb(0, 0, 0);"><span style="font-size: 16px;">SignIn Url: <a href="https://a.abc.com">https://a.abc.com/</a></span></span></div>
<div> </div>
<div> </div>
<div><span style="font-size:16px;">Please let us know if you need any help, email us at <a href="mailto:[email protected]">[email protected]</a></span></div>
也æ¯
åãhtmlã³ãŒãã§ã¬ã¬ã·ãŒãã³ãã¬ãŒãã«åãæ¿ãããšãããæ©èœããŸãã V3 APIã®æ°ããå€æŽãåå ã§ããå¯èœæ§ã¯ãããŸããïŒ
ããã«ã¡ã¯ã @ himanshupntã®ã³ã¡ã³ããèªãã åŸãã¬ã¬ã·ãŒãã³ãã¬ãŒãã§ãã¹ããããšãããæ©èœããŸããã ããããšã@himanshupnt ã
åŸã§ã Sendgridã®ããã¥ã¡ã³ãã§ããåçãã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒãã䜿çšããã¡ãŒã«éä¿¡ãèŠã€ããŸãããæ°ãããã³ãã¬ãŒãïŒã¬ã¬ã·ãŒãã³ãã¬ãŒãã§ã¯ãªãïŒãæ©èœããŠããããã§ãã åãHTMLãã³ãã¬ãŒãã䜿çšããã³ãŒãã次ã®ããã«æŽæ°ããŸããã
const sgMail = require("@sendgrid/mail");
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
sgMail.setSubstitutionWrappers("{{", "}}"); // Configure the substitution tag wrappers globally
const msg = {
from: "[email protected]",
templateId: "d-27e7d954368c46519eddc806e5cf8156",
personalizations: [
{
to: [
{
email: "[email protected]"
}
],
dynamic_template_data: {
name: "Someone",
city: "Somewhere",
subject: "Hello new world"
}
}
]
};
sgMail.send(msg).catch(err => console.error(err.message));
ãsubstitutionsãããdynamic_template_dataãã«çœ®ãæããããã¥ã¡ã³ãã®èŠæ±ã«å¿ããŠãpersonalizationsãå ã«ãtoããé 眮ããããšã«æ³šæããŠãã ããã ãŸãããµããžã§ã¯ãããdynamic_template_dataãã®1ã€ãšããŠæ±ããæ©èœããŸãã ïŒãã³ãã¬ãŒãã®ä»¶åãã£ãŒã«ãã«{{subject}}ãå ¥åããŠãã ããïŒ
ããããšãã
@nratorããã¯ç§ã«ãšã£ãŠããããããŸããã æçš¿ããŠãããŠããããšãïŒ
ç§ã¯åãåé¡ãæ±ããŠãããç§ãåé¡ãéããŸããïŒåé ã§è¿°ã¹ã解決çãè©ŠããåŸïŒã ãã ãã @ nratorãèšåãããã³ãã¬ãŒãã«ã name
ãšcity
ãè¿œå ããããšãã§ããŸããã ããããç§ãåãåãé»åã¡ãŒã«ã«å«ãŸããŠããããã <%subject%>
ãš<%body%>
ã眮ãæããããšãã§ããŸããã§ããã <%body%>
ãš<%subject%>
ã眮ãæããã«ã¯ã©ãããã°ããã§ããïŒ @himanshupntã©ããã£ãŠããã解決ããŸãããïŒ
ããã«ã¡ã¯@ pankaja92 ãç§ã<ïŒ subjectïŒ >ãåäœãããããšãã§ããŸããã§ããã ãµããžã§ã¯ããåŠçããç§ã®æ¹æ³ã¯ãããããdynamic_template_dataãã®1ã€ãšããŠæ±ãããšã§ããã€ãŸãã<%%>ã§ã¯ãªã{{}}ã§ã©ãããããdynamic_template_dataãå ã§åŠçããŸãã
ãã®sendgridã®ããã¥ã¡ã³ãã圹ç«ã€ãããããŸããã ãã ãããµããžã§ã¯ããã©ã¡ãŒã¿ã¯æ©èœããŠããªãããã§ãã
@nratorããããšãã åºæ¥ãã ãããã£ãŠã<ïŒ bodyïŒ >ãå¿ èŠãããŸããïŒäžããããäŸã§ã¯æ©èœããªãããïŒã
ãšããã§ãç¹å®ã®åé¡ã§ã¯ãããŸãããããã®ã©ã€ãã©ãªãä»ããŠè©³çŽ°ã®ãªã¹ããéä¿¡ããçµéšãäŸã¯ãããŸããïŒ ç§ã¯èªåã®ã¢ããªãæ§ç¯ããã®ã«åœ¹ç«ã€ãããããªãäœããæ¢ããŠããŸã:)
@ pankaja92詳现ã®ãªã¹ããéä¿¡ããããšã§ãã©ãããæå³ããã®sendgridããã°æçš¿ãèªãããšãã§ããŸããåºæ¬çã«ãã¢ã€ãã ã®ãªã¹ããå埩åŠçããããåºæ¬çãªæ¡ä»¶ã䜿çšããŠåçã³ã³ãã³ããçæãããã§ããŸãã
å®éã®ã³ãŒãã«ã€ããŠã¯ããã®ãªããžããªãåç §ã
ããã圹ã«ç«ãŠã°å¹žãïŒ
ã¿ãªãããããã«ã¡ã¯ããã®åé¡ã«ãæ°æéãè²»ãããŸããã
代ããã«äœ¿çšããã®substitutions
䜿çšããŠã dynamicTemplateData
ã¡ã€ã³ã§msg
代ããã«ããªããžã§ã¯ãïŒ
const sgMail = require('@sendgrid/mail')
sgMail.setApiKey(process.env.SENDGRID_API_KEY)
sgMail.setSubstitutionWrappers('{{', '}}')
const msg = {
to: '[email protected]',
from: '[email protected]',
templateId: 'd-27e7d954368c46519eddc806e5cf8156',
dynamicTemplateData: {
name: 'Some One',
city: 'Denver',
},
}
sgMail.send(msg)
åç §ïŒ https ïŒ
ãã®PRã«ãããšã templateId
ãåçãã³ãã¬ãŒãïŒãã¬ãã£ãã¯ã¹ãd-
ïŒã®å Žåã substitutions
ã¯ãŸã£ããéä¿¡ãããªãããã dynamicTemplateData
ãªããžã§ã¯ãã䜿çšããå¿
èŠããããŸãã
圌ãã¯ããã§åé¡ãäœæããŠãããã¥ã¡ã³ããžã®åçãã³ãã¬ãŒãã®è¿œå ã®äœ¿çšæ³ãæ¹åããŸãããããããŸã§ã¯ããã圹ç«ã€ããšãé¡ã£ãŠããŸãã ð
ãã®åé¡ã«åŸã£ãŠãã ããïŒïŒ703
'substitutions'ã 'dynamic_template_data'ã«å€æŽããŸã
@jseyfertã¯dynamic_template_data
ã§ããã¹ãã§ã¯ãããŸãããïŒ
@aroachããªãã¯æ£ããã§ãã ã³ã¡ã³ããæŽæ°ããŸããã
æåã¯ç§ã®åŽã§ãããŸããããŸããã§ããã
ç§ã®ããŒãžã§ã³ãå°ãå€ããªã£ãŠããããšã«æ°ã¥ããŸããïŒ@ sendgrid / mail @ 6.2.1ã䜿çšããŠããŸããïŒ
ããã±ãŒãžãæŽæ°ããã³ãŒããå€æŽãããšãããæ©èœããŠããŸãã
@ sendgrid / [email protected]ã䜿çš
const result = await this.sgMail.send({
personalizations: [{
to: this._to
}],
dynamicTemplateData: {
test: 'test' <== working (code in template: {{ test }})
},
templateId: this._templateId,
});
以äžã®ã³ãŒããæ©èœããŠããªãããšã«æ³šæããŠãã ããã
const result = await this.sgMail.send({
personalizations: [{
to: this._to,
dynamicTemplateData: {
test: 'test' <== NOT working (code in template: {{ test }})
}
}],
templateId: this._templateId,
});
ã¯ããdynamic_template_dataã®ãµããŒãã«ã¯v6.3.1ã䜿çšããå¿ èŠããããŸãã
4æ15åAMãã€è»œåºŠã®ã§ã¯ç«ã2018幎12æ11æ¥ã«[email protected]æžããŸããïŒ
æåã¯ç§ã®åŽã§ãããŸããããŸããã§ããã
ç§ã®ããŒãžã§ã³ãå°ãå€ããªã£ãŠããããšã«æ°ã¥ããŸããïŒç§ã¯äœ¿çšããŠããŸãã
@ sendgrid / mail @ 6.2.1ïŒ
ããã±ãŒãžãæŽæ°ããã³ãŒããå€æŽãããšãããæ©èœããŠããŸãã@ sendgrid / [email protected]ã䜿çš
const result = await this.sgMail.sendïŒ{
ããŒãœãã©ã€ãºïŒ[{
toïŒthis._to
}]ã
dynamicTemplateDataïŒ{
ãã¹ãïŒ 'ãã¹ã' <==åäœäžïŒãã³ãã¬ãŒãã®ã³ãŒãïŒ{{ãã¹ã}}ïŒ
}ã
templateIdïŒthis._templateIdã
}ïŒ;â
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/sendgrid/sendgrid-nodejs/issues/676#issuecomment-446166152 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/ACL-sjFRFP8txUETNWFVLs0chW5yyL1Nks5u35OzgaJpZM4TOB5l
ã
ããã«ã¡ã¯ãå¿ããªãã§ãã ãã
ãã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒããäœæããã®ã§ã¯ãªããã¬ã¬ã·ãŒãã³ãã¬ãŒããäœæããŠãã®ã³ããŒãäœæããŸãã
ãã®åŸãããªããè¡ããã¹ãŠã®ã¹ããããæ©èœããŸãã
dynamicTemplateData
ç§ã®ããã«åããŸãã SendGridã©ã€ãã©ãªã®ææ°ããŒãžã§ã³ã䜿çšããŠãããFirebaseïŒé¢æ°ïŒãä»ããŠäœ¿çšããŠããŸãã çŸåšã®äž»ãªåé¡ã¯ãTypeScriptã®ãµããŒããšããã¥ã¡ã³ãã®æ¬ åŠã§ãã
@roymilder ãã©ããããããšãããããŸããã ããªãã®çãã¯ç§ã®äžæ¥ã«ãªããŸãã-åçãã³ãã¬ãŒãã®ä»£æ¿ã¯éåžžã«äžæ確ã§ãã
称è³ïŒ
ããã«ã¡ã¯@OleksiiM ã
ãã®äŸã¯åœ¹ã«ç«ã¡ãŸããïŒ
@ darren-devã
å©ããŠãããŠããããšãïŒ TypeScriptã®ãµããŒããšããã¥ã¡ã³ãã®æ¬ åŠã«é¢ããŠãFirebaseåŽã«ã€ããŠèšåããŠããŸããïŒ
@uups ã
å©ããŠãããŠããããšãïŒ
æ¬å ·ã
ãšã«ããŒ
@thinkingserious ãã¯ããããã§ãã ããããšãããããŸããã
@OleksiiM ã
æåã¯ã©ããèŠãŸãããïŒ åçãã³ãã¬ãŒãã䜿çšããå¿ èŠããã人ããæåã«éä¿¡ãããªã³ã¯ã«ç¢ºå®ã«ã¢ã¯ã»ã¹ã§ããããã«ããæ¹æ³ãèŠã€ããããšããŠããŸãã
@thinkingserious
ããããå§ã
ããã¯èšãïŒ
ããã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒãã®éä¿¡
次ã®3ã€ã®æ¹æ³ã®ããããã䜿çšããŠããã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒããéä¿¡ã§ããŸãã
SMTPãªã¬ãŒã®äœ¿çš
Web APIv3ã¡ãŒã«éä¿¡ãšã³ããã€ã³ãã®templatesãã©ã¡ãŒã¿ãŒã«ãã³ãã¬ãŒãIDãå«ãã
Web APIv2ã¡ãŒã«éä¿¡ãšã³ããã€ã³ãã§x-smtpapiãã©ã¡ãŒã¿ãŒã䜿çšããã
ããã§ãã Web APIv3ã¡ãŒã«éä¿¡ãšã³ããã€ã³ãã®ãã³ãã¬ãŒããã©ã¡ãŒã¿ãŒã«ãã³ãã¬ãŒãIDãå«ãããã«ãžã£ã³ãããŸããã
ãªããããäžæ確ã ã£ãã®ãïŒ
æåŸã®ããŒãžã«ã¯ãtemplate_idã衚瀺ããŠãããããdynamic_template_dataããã£ãŒã«ãã«ã€ããŠã¯äœãè¿°ã¹ãŠããªããå¯èœãªããªã¯ãšã¹ãããã£ãã©ã¡ãŒã¿ãã®ãªã¹ãã衚瀺ãããŸãã ãããŒãœãã©ã€ãºã+ã眮æã+ãtemplate_idãã䜿çšããããšããŸããããæ©èœããŸããã§ããã
ãŸããç§ã¯æ°ããSendgridãŠãŒã¶ãŒã§ããããããå€ãããã³ãã¬ãŒããšãæ°ãããïŒåçïŒãã³ãã¬ãŒããããã³ãããã®éããèªèããŠããŸããã§ããïŒäžèšã®sendgridããã¥ã¡ã³ãããŒãžã¯ããã«ã€ããŠäœãè¿°ã¹ãŠããŸããïŒã
質åããŠããã¥ã¡ã³ããæ¹åããŠããã ãããããšãããããŸãã ä»ã®äººããã®ãããªãã©ãã«ãé¿ããŠãããããšãé¡ã£ãŠããŸãã
@thinkingseriousè¿œå ããããšã
çŸåšã次ã®ããã¥ã¡ã³ãã䜿çšããŠããŸãïŒ //sendgrid.com/docs/API_Reference/api_v3.html
é»åã¡ãŒã«ã®éä¿¡æé ïŒhttps://sendgrid.api-docs.io/v3.0/mail-sendïŒã«ã¯ãããŒãœãã©ã€ãºã§dynamic_template_data
ããŸã£ããèšèŒãããŠããŸããã
ã§ãããããããäžæ確ã§ãã
ããã圹ã«ç«ãŠã°å¹žãïŒ
@Whatthefoxsays ^^
@ OleksiiM ïŒ@ roymilderã«æè¬ããŸãïŒ TwilioSendGridã³ãã¥ããã£ãžã®ãååã«æè¬ããŸã:)
ã¿ãªãããããã«ã¡ã¯ããã®åé¡ã«ãæ°æéãè²»ãããŸããã
代ããã«äœ¿çšããã®
substitutions
䜿çšããŠãdynamicTemplateData
ã¡ã€ã³ã§msg
代ããã«ããªããžã§ã¯ãïŒconst sgMail = require('@sendgrid/mail') sgMail.setApiKey(process.env.SENDGRID_API_KEY) sgMail.setSubstitutionWrappers('{{', '}}') const msg = { to: '[email protected]', from: '[email protected]', templateId: 'd-27e7d954368c46519eddc806e5cf8156', dynamicTemplateData: { name: 'Some One', city: 'Denver', }, } sgMail.send(msg)
åç §ïŒïŒ691
ãã®PRã«ãããšã
templateId
ãåçãã³ãã¬ãŒãïŒãã¬ãã£ãã¯ã¹ãd-
ïŒã®å Žåãsubstitutions
ã¯ãŸã£ããéä¿¡ãããªããããdynamicTemplateData
ãªããžã§ã¯ãã䜿çšããå¿ èŠããããŸãã圌ãã¯ããã§åé¡ãäœæããŠãããã¥ã¡ã³ããžã®åçãã³ãã¬ãŒãã®è¿œå ã®äœ¿çšæ³ãæ¹åããŸãããããããŸã§ã¯ããã圹ç«ã€ããšãé¡ã£ãŠããŸãã ð
2æ¥ç®ããããã¹ã«ããŠãããèŠãŠåäœãããŸããã
ããã«ã¡ã¯@Travotics ã
äžèšãèŠã€ããåã«ãã©ã®ããã¥ã¡ã³ãããå§ããŸãããïŒ ç§ã¯ãã®çµéšãæ¹åããããšããŠããŸãã ããããšãïŒ
æ¬å ·ã
ãšã«ããŒ
@thinkingserious https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/kitchen-sink.md
dynamicTemplateData
ã¯ãããŸãããã substitutionWrappers
ãšsubstitutions
ãŸãã
ããã¥ã¡ã³ãã®æŽæ°ã«å ããŠãã¿ã€ãã€ã³ã¿ãŒãã§ã€ã¹MailData
ïŒhttps://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/helpers/classes/ïŒãæŽæ°ããããšããå§ãããŸãã mail.d.tsïŒL117ïŒã substitutions
ãµããŒãããªã@ sendgrid / mailãªãªãŒã¹ã®å Žåã substititons
substitutionWrappers
ãã£ãŒã«ããšV2MailData
ãã©ã¡ãŒã¿ãŒãå¿
èŠã§ãã
ããã«ã¡ã¯ã @ himanshupntã®ã³ã¡ã³ããèªãã åŸãã¬ã¬ã·ãŒãã³ãã¬ãŒãã§ãã¹ããããšãããæ©èœããŸããã ããããšã@himanshupnt ã
åŸã§ã Sendgridã®ããã¥ã¡ã³ãã§ããåçãã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒãã䜿çšããã¡ãŒã«éä¿¡ãèŠã€ããŸãããæ°ãããã³ãã¬ãŒãïŒã¬ã¬ã·ãŒãã³ãã¬ãŒãã§ã¯ãªãïŒãæ©èœããŠããããã§ãã åãHTMLãã³ãã¬ãŒãã䜿çšããã³ãŒãã次ã®ããã«æŽæ°ããŸããã
const sgMail = require("@sendgrid/mail"); sgMail.setApiKey(process.env.SENDGRID_API_KEY); sgMail.setSubstitutionWrappers("{{", "}}"); // Configure the substitution tag wrappers globally const msg = { from: "[email protected]", templateId: "d-27e7d954368c46519eddc806e5cf8156", personalizations: [ { to: [ { email: "[email protected]" } ], dynamic_template_data: { name: "Someone", city: "Somewhere", subject: "Hello new world" } } ] }; sgMail.send(msg).catch(err => console.error(err.message));
ãsubstitutionsãããdynamic_template_dataãã«çœ®ãæããããã¥ã¡ã³ãã®èŠæ±ã«å¿ããŠãpersonalizationsãå ã«ãtoããé 眮ããããšã«æ³šæããŠãã ããã ãŸãããµããžã§ã¯ãããdynamic_template_dataãã®1ã€ãšããŠæ±ããæ©èœããŸãã ïŒãã³ãã¬ãŒãã®ä»¶åãã£ãŒã«ãã«{{subject}}ãå ¥åããŠãã ããïŒ
ããããšãã
ã©ããããããšãããããŸããïŒ ç§ã¯ããã®ãããã°ã«ããªãã®æéãè²»ãããŸããã ïŒ/
æãåèã«ãªãã³ã¡ã³ã
ããã«ã¡ã¯ã @ himanshupntã®ã³ã¡ã³ããèªãã åŸãã¬ã¬ã·ãŒãã³ãã¬ãŒãã§ãã¹ããããšãããæ©èœããŸããã ããããšã@himanshupnt ã
åŸã§ã Sendgridã®ããã¥ã¡ã³ãã§ããåçãã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒãã䜿çšããã¡ãŒã«éä¿¡ãèŠã€ããŸãããæ°ãããã³ãã¬ãŒãïŒã¬ã¬ã·ãŒãã³ãã¬ãŒãã§ã¯ãªãïŒãæ©èœããŠããããã§ãã åãHTMLãã³ãã¬ãŒãã䜿çšããã³ãŒãã次ã®ããã«æŽæ°ããŸããã
ãsubstitutionsãããdynamic_template_dataãã«çœ®ãæããããã¥ã¡ã³ãã®èŠæ±ã«å¿ããŠãpersonalizationsãå ã«ãtoããé 眮ããããšã«æ³šæããŠãã ããã ãŸãããµããžã§ã¯ãããdynamic_template_dataãã®1ã€ãšããŠæ±ããæ©èœããŸãã ïŒãã³ãã¬ãŒãã®ä»¶åãã£ãŒã«ãã«{{subject}}ãå ¥åããŠãã ããïŒ
ããããšãã