2018幎7æ24æ¥ãç§ãã¡ã®ããŒã ã¯ãã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒãã®åçã³ã³ãã³ããå ¬éããŸããã Mail SendAPIã®v3ãä»ããŠéä¿¡ãããã¹ãŠã®ã客æ§ãå©çšã§ããããã«ãªããŸããã ãã³ãã«ããŒæ§æã®ãµãã»ããã®ãã€ãã£ããµããŒãã®ãããã§ããªã¹ããç¹°ãè¿ãåŠçããããæ¡ä»¶ãåŠçãããã§ããŸãã
詳现ã«ã€ããŠã¯ãããã°æçš¿ã®çºè¡šãã芧ãã ããã
çŸåšããã®æ©èœã䜿çšããã«ã¯ã次ã«ç€ºãããã«ãªã¯ãšã¹ãæ¬æãæåã§äœæã
次ã«ããã®SDKã®ãã«ããŒã³ãŒãïŒããã§å®äºã§ãïŒãšäŸãäœæããå¿ èŠããããŸãã
ããã¥ã¡ã³ããæŽæ°ããŠãã ãã-v3APIã§çœ®æãæ©èœããªãã£ãçç±ãç解ããããã«1æéè²»ãããŸããã
@ jharris-codeã®ãšã¯ã¹ããªãšã³ã¹ãæªãããšããè©«ã³ããŸãã
ãã®åé¡ã«ããªãã®æ祚ãè¿œå ããŠãåªå é äœãäžããã®ã«åœ¹ç«ãŠãŸããã PRïŒ711ãããã®ã§ãããããæŽæ°ããããšæããŸãã
ããã¥ã¡ã³ãããªãããã«å®éã®ã³ãŒãã®ãªãªãŒã¹ã劚ããããã®ã¯éåžžã«ã°ãããŠããŸãã
@thinkingseriousããããã£ããããå®éãã©ã€ãã©ãªã®ããŒãžã§ã³ãæŽæ°ããããšã¯ç§ã®é ã
ç§ã¯ãããè©ŠããŠã¿ãŸããthxã
ãŠãŒã¶ãŒãžã®æ³šæïŒãã³ãã¬ãŒãã䜿çšããå Žåã¯ã substitutions
ã§ã¯ãªãdynamic_template_data
æž¡ããŸãã
次ã«ããsubstitutionsïŒãããdynamic_template_dataïŒãã«å€æŽããå¿ èŠããããŸãã
ãŸãããã³ãã¬ãŒãã¯ãã³ãã«ããŒã䜿çšããããããsubstitutionWrappersããæå®ããå¿ èŠã¯ãããŸããã
ãã®ãŠãŒã¹ã±ãŒã¹ã®äŸã§ã¯ãdynamic_template_dataã§ã¯ãªã眮æã䜿çšããŠããŸãã Plzã®æŽæ°ã§ãããã®ã¹ã¬ãããèŠã€ãããŸã§ã«ãSDKã§éãã§æ€çŽ¢ããã®ã«æ°æéããããŸããã ïŒãŸããããªãã®APIããã¥ã¡ã³ãã¯ããã«ã€ããŠäœãèšåããŠããŸããããããã圹ã«ç«ã¡ãŸããã§ããã
ãŸããsubstitutionWrappersã¯dynamic_template_dataã§ã¯ãŸã£ããæ©èœããªãããã§ãã ã¡ãã»ãŒãžãªããžã§ã¯ãã«ããŒãšå€ã®ãã¢substitutionWrappers: ['*|', '|*']
ãå«ãããã©ããã«é¢ä¿ãªããäžæ¬åŒ§ã§å²ãŸãããã³ãã¬ãŒãå€æ°ã®ã¿ãå
¥åãããŸããïŒãã³ãã¬ãŒãã«ãã³ãã«ããŒæ§æã䜿çšããããã«æå³çã«åŒ·å¶ããŠããã®ã§ããïŒïŒ
è¬çœª@ josh-yonomiã
ãã£ãŒãããã¯ã«åºã¥ããŠããã¥ã¡ã³ããæŽæ°ããŸããã
æ°ãããã³ãã¬ãŒãã§ã¯ããã³ãã«ããŒæ§æã䜿çšããŸãã åŸæ¥ã®ãã³ãã¬ãŒãã¯ä»¥åãšåãããã«æ©èœããŸãã
æ¬å ·ã
ãšã«ããŒ
ã¡ãŒã«ãåãåããŸãããã眮æãæ©èœããŸããã äœãåé¡ãåŒãèµ·ããå¯èœæ§ããããŸããïŒ
const msg = {
to: email,
from: sendGridMail,
templateId: emailTemplate.confirmationEmail,
dynamic_template_data: {
firstName: firstName,
lastName: lastName,
link: link
}
};
@thinkingseriousçµç±EDIT
åé¡ãã©ãã«ãããæããŠããã ããŸãããïŒ ç§ãã¡ã¯ããªãã®æ¬²æ±äžæºãç解ããŠãç§ãã¡ãæ¹åã§ããããã«ããããšæã£ãŠããŸãã
@ drav96 ã
ãã³ãã¬ãŒããã©ã®ããã«èŠããããå ±æããŠãããããã§ããïŒ
æ¬å ·ã
ãšã«ããŒ
ãªãsubstitutionWrappersã§ç¹å¥ãªæåãåé€ããã®ã§ããïŒ
dynamic_template_data: {
'foo-bar': 'wtf',
'bar_baz': 'wtf',
'baz.bro': 'wtf',
'foo': 'wtf'
}
{{foo}}
ã®ã¿ãé»åã¡ãŒã«ã§wtf
æååãè¿ããŸãã
@larafaleã¯ããããŸããããããã¯ç¢ºãã«åççã§ã¯ãªãããã§ãã ãã®SDKã®ãœãŒã¹ã³ãŒããèŠããšããããã®ããŒãã©ãã§å€æŽãããŠããã®ãããããŸããã
ãã®åé¡ã«ã€ããŠå¥ã®åé¡ãäœæããHTMLãã³ãã¬ãŒããã©ã®ããã«èŠããããå«ããŠãããããã§ããïŒ æ°ããåé¡ããã°ãšããŠããŒã¯ããå¿ èŠã«å¿ããŠåçŸããŠä¿®æ£ãè©Šã¿ãŸãã
ããã«ã¡ã¯ã
ãã®ãããåçãã³ãã¬ãŒãã¡ãŒã«ãéä¿¡ããããšããŠããŸããã眮æãŸãã¯dynamic_template_data
ã䜿çšã§ããŸããã
ç§ã®ãã³ãã¬ãŒãã«ã¯{{fullname}}
ã{{date}}
ãªã©ã®ã¿ã°ãããããããã®ããããã£ã¯send
é¢æ°ã«éä¿¡ãããŸãã
const msg = {
to,
from,
templateId: template.id,
dynamic_template_data: substitutions,
};
return sgMail.send(msg)
substitutions
ãªããžã§ã¯ãã«é©åãªå€ãæã€é©åãªããããã£ãããããšã確èªããŸãããã眮æãæ©èœããŸããã
ç§ãééã£ãŠããããšã«ã€ããŠäœãèãã¯ãããŸããïŒ
ããããšãã
@ gianfelipe93
æ§é ã¯æ£ããã§ãã ç§ãåãåé¡ãæ±ããŠããŸããã
ç§ã®è§£æ±ºçã¯ããããžã§ã¯ããã@sendgridããã±ãŒãžãã¢ã³ã€ã³ã¹ããŒã«ããŠãå床ã€ã³ã¹ããŒã«ããããš
ãããããªãã®ããã«åããã©ããç§ã«ç¥ãããŠãã ãã
const msg= {
to: email,
from: sendGridMail,
templateId: emailTemplate.requestDemoEmail,
dynamic_template_data: {
name: data.name,
email: data.email,
}
};
@ drav96ããããšããã¡ã€ããä»ã¯åããŠãã
ããã«ããã«1æéæéãè²»ãããåŸãç§ãæããã®ãè¿œå ãããšãããã€ãã®æ±ºå®çãªããã¥ã¡ã³ãã«ãªããŸãã ïŒãŸããç§ã®åã§äœæéãæéãç¡é§ã«ããŠããããã¹ãŠã®äººã«æè¬ããŸããïŒ
d-
ã§å§ãŸãå Žåã substitutions
ã¯æ©èœããªããããCAMEL-CASE dynamicTemplateData
ã䜿çšããå¿
èŠããããŸãïŒãšã«ãããsnake_caseããŒãcamelCaseã«å€æãããããåç
§ããŠd-
ã§å§ãŸãå Žåã setSubstitutionWrappers
ã¯é»ã£ãŠç¡èŠãããããããã³ãã¬ãŒãã§{{
ãš}}
ã䜿çšããå¿
èŠããããŸãããã«ããã«1æéæéãè²»ãããåŸãç§ãæããã®ãè¿œå ãããšãããã€ãã®æ±ºå®çãªããã¥ã¡ã³ãã«ãªããŸãã ïŒãŸããç§ã®åã§äœæéãæéãç¡é§ã«ããŠããããã¹ãŠã®äººã«æè¬ããŸããïŒ
- ãã³ãã¬ãŒãIDã
d-
ã§å§ãŸãå Žåãsubstitutions
ã¯æ©èœããªããããCAMEL-CASEdynamicTemplateData
ã䜿çšããå¿ èŠããããŸãïŒãšã«ãããsnake_caseããŒãcamelCaseã«å€æãããããåç §ããŠ- ãã³ãã¬ãŒãã
d-
ã§å§ãŸãå ŽåãsetSubstitutionWrappers
ã¯é»ã£ãŠç¡èŠãããããããã³ãã¬ãŒãã§{{
ãš}}
ã䜿çšããå¿ èŠããããŸã
ç§ã®å Žåã¯ãããã§åäœããŸãdynamic_template_data
ã§ããã³ãã¬ãŒãIDã§æçŽãæã£ãŠããå Žåd-
ã¯ããããã¯ã¹ããŒã¯ã±ãŒã¹ããŒã§æ©èœããŸãããéçºè ããã£ã¡ã«ã±ãŒã¹ã«å éšçã«ã³ãããããŠããããã«èŠããŸãïŒäžèšã®ã¬ããŒãã§ãªã³ã¯ããè¡ãåç §ããŠãã ããïŒã ãããã£ãŠããã¹ãŠã®æ°ããã³ãŒãã§ãã£ã¡ã«ã±ãŒã¹ã䜿çšããããšããå§ãããŸãã
ããã«ã¡ã¯@ kael-shipmanã
ãææ°ããããããŸããããããããé¡ãããããŸãã
ãã®ããã¥ã¡ã³ããèŠã
æ¬å ·ã
ãšã«ããŒ
@thinkingserious ãç¶æ³ãæ¹åããããã®ããªãã®ç解ãšæ欲ã«æè¬ããŸãã ãããŠãããã«æççã«ãªã£ãŠãã¿ãŸããã looooooooooooooongæ¥ããããŸãã;ïŒã
ãšã«ãããåé¡ã¯æ£ããïŒã£ãœãïŒããã¥ã¡ã³ããã©ããã«ååšããã»ã©ã§ã¯ãããŸãããããã¯å€ãã®å€ãããã¥ã¡ã³ãããŸã ã°ãŒã°ã«æ€çŽ¢ã«å·»ã蟌ãŸããŠãããšããããšã§ãã ãsendgridãã³ãã¬ãŒããã£ãŒã«ãããæ€çŽ¢ããŸããïŒã¡ããã©ä»ïŒãæåã®éåºåçµæã¯ããã§ããããã¯ãã¹ãŠã®å
åã«ãã£ãŠå
¬åŒã®ããã¥ã¡ã³ãã§ãããæããã«å€ããªã£ãŠããŸãã ããã ãã§ãªãã2ã€ã®ç°ãªã眮æ圢åŒïŒ -firstName-
ãš%firstName%
ïŒããããã䜿çšãããã®ã¯äœ¿çšããSDKã©ã€ãã©ãªã«äŸåããå¯èœæ§ããããŸãããšã ãæžãããŠããŸãããã¹ãŠã®SDKã©ã€ãã©ãªãããããåãåäžã®ãã³ãã«ïŒçœ®æã¿ã°ã®ã¹ã¿ã€ã«ã1ã€ãããªãïŒãæããŠããããšã
sendgridã§ã®ç§ã®çµéšã§ã¯ãæ§ç¯ããããã®ã«å€§ãã«æè¬ããŠããŸããããã®ããã¥ã¡ã³ãã®æ··ä¹±ã¯å®éã«ã¯äŸå€ã§ã¯ãªãèŠåã§ãã ããããä»ã®ãœãããŠã§ã¢ã®äžçãšåããããååãã«ãªã£ãŠããããšã¯ããã£ãŠããŸããããã¹ãŠã®ããã¥ã¡ã³ããæ£èŠåããããŒãžã§ã³çªå·ãä»ããŠãäœããããã®ã«1ãæã»ã©ããããšããã§ãããã Googleã®ããããããã
ãšã«ãããããããšãïŒ
ãŸãããªã³ã¯ããããã¥ã¡ã³ãã«ã¯ãã¹ããŒã¯ã±ãŒã¹ã§dynamic_template_data
ããŠããŸãããããæ£ãããã°ãã³ãŒãèªäœããã£ã¡ã«ã±ãŒã¹ã«å€æããŠããããã«èŠããçç±ãããããŸããã äžèšã®ããã«ãç§ã¯ã¹ããŒã¯ã±ãŒã¹ãæ©èœããããšãèªèããŠããŸãããã³ãŒããèãããšãããã¥ã¡ã³ããããã䜿çšããããšãæšå¥šããã¹ãã§ã¯ãªãããã§ãã
ããã«ã¡ã¯@ kael-shipmanã
詳现ãªãã£ãŒãããã¯ãæäŸããããã«æéãå²ããŠããã ãããããšãããããŸãïŒ
ãæäŸããã ãããªã³ã¯ã«é¢ããŠããã®ããã¥ã¡ã³ãã¯ããã®SDKããµããŒãããSendGrid v3 REST APIã§ã¯ãªããSendGrid SMTPAPIãåç §ããŠããŸãã ããã¯èšã£ãŠããããªãã¯ãããç¥ã£ãŠãããšæåŸ ãããã¹ãã§ã¯ãããŸããã ãã®åé¡ãããã¥ã¡ã³ããŒã·ã§ã³ããŒã ã«ç¥ãããŠããããæ確ã«ããæ¹æ³ããããã©ããã確èªããŸãã
æè¿ããªãŒãã³ãœãŒã¹ã®ããã¥ã¡ã³ããæŽæ°ããŠ
äžè²«æ§ãä¿ã€ããã«ãã£ã¡ã«ã±ãŒã¹ã䜿çšããããã«READMEãä¿®æ£ããŸãã ããããã£ããããŠç§ãã¡ã®æ³šæãåŒããŠãããŠããããšãïŒ
å床æè¬ããããªãã®è©³çŽ°ãªãã£ãŒãããã¯ã«å¯Ÿããæè¬ã®å°ãšããŠãç§ãã¡ã¯ããªãã«ããã€ãã®çåãæäŸããããšæããŸãã 楜ãã¿ïŒ
æ¬å ·ã
ãšã«ããŒ
ãã£ããããããããšãïŒD
18:09ãšã«ããŒã»ããŒãã¹ã®ç«ã2018幎9æ18æ¥ã«ã¯[email protected]
æžããŸããïŒ
ããã«ã¡ã¯@ kael-shipman https://github.com/kael-shipman ã
詳现ãªãã£ãŒãããã¯ãæäŸããããã«æéãå²ããŠããã ãããããšãããããŸãïŒ
ããªããæäŸãããªã³ã¯ã«é¢ããŠããã®ããã¥ã¡ã³ãã¯åç §ãããŠããŸã
ãã®SDKã䜿çšããSendGridv3 REST APIã§ã¯ãªããSendGrid SMTPAPIã«
ãµããŒãããŸãã ããã¯èšã£ãŠããããªãã¯ãããç¥ã£ãŠãããšæåŸ ãããã¹ãã§ã¯ãããŸããã ç§ã¯æã£ãŠãããŸã
ãã®åé¡ã¯ãããã¥ã¡ã³ããŒã·ã§ã³ããŒã ã泚æãæã£ãŠã
ãããæ確ã«ããæ¹æ³ãæè¿ããªãŒãã³ãœãŒã¹ã®ããã¥ã¡ã³ããæŽæ°ããŠåèµ·åããŸãã
https://sendgrid.com/blog/how-to-get-the-most-from-sendgrids-new-knowledge-center/ ã
ããã²ãŒããããããšæããŸããäžè²«æ§ãä¿ã€ããã«ãã£ã¡ã«ã±ãŒã¹ã䜿çšããããã«READMEãä¿®æ£ããŸãã ã«ã€ããŠããããšãããããŸãã
ããããã£ããããŠç§ãã¡ã®æ³šæãåŒãïŒããäžåºŠããããšãããããŠããªãã®è©³çŽ°ã«å¯Ÿããç§ãã¡ã®æè¬ã®å°ãšããŠ
ãã£ãŒãããã¯ãç§ãã¡ã¯ããªãã«ããã€ãã®çåãæäŸããããšæããŸã
https://dx.sendgrid.com/swag ã 楜ãã¿ïŒæ¬å ·ã
ãšã«ããŒ
â
ããªããèšåãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/sendgrid/sendgrid-nodejs/issues/703#issuecomment-422588492 ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/ADUIglZIH2d7imy-H7dekTo5A-v2Xau8ks5ucX0agaJpZM4Vev8b
ã
dynamic_template_data
ãäžè¬çãªé»åã¡ãŒã«å€æ°ã§æ©èœãããããšã¯ã§ããŸãããåä¿¡è
ããšã«åçããŒã¿ãè¿œå ããå¿
èŠãããå Žåã¯ã©ããªããŸããïŒ äŸïŒæ³šæçªå·ã泚ææ°éãªã©ãããã¥ã¡ã³ãã«ã¯ããã®äœ¿çšäŸã¯ãããŸããããèŠèœãšããŠããå¯èœæ§ããããŸãã
ãŠãŒã¶ãŒãžã®æ³šæïŒãã³ãã¬ãŒãã䜿çšããå Žåã¯ã
substitutions
ã§ã¯ãªãdynamic_template_data
æž¡ããŸãã
@catamphetamineæ®å¿µãªãããã¿ããªã®ã³ãŒããdynamicTemplateData
ã§æ©èœããŠããããã«èŠããçç±ãç解ããã®ã«æéããããããããããã³ã¡ã³ããåŽäžããŸããããç§ã®å Žåã眮æã¯åã«åé€ãããŸãã ä»ã®äººãããè¯ãçµéšãããããšãé¡ã£ãŠããŸãã
ç§ã®ããŒãžã§ã³ïŒ
"@sendgrid/mail": "^6.3.1"
ç§ã«ãšã£ãŠãç§ã¯æ¬¡ã®ããšãããªããã°ãªããªãã£ãããšãããããŸããïŒäººã ãèšãããšã®å察ïŒïŒ
// This seems to be the default, however, to avoid unexpected API changes,
// I'd rather set this manually
setSubstitutionWrappers("{{", "}}");
{
subject: EMAIL_SUBJECT_ONBOARDING,
templateId: "templateId",
personalizations: [{
to,
// NOT WORKING WITH THIS â
// dynamicTemplateData: {
// senderName: EMAIL_FROM_NAME,
// senderAddress: "an actual adress",
// },
// WORKS WITH THIS â
substitutions: {
senderName: EMAIL_FROM_NAME,
senderAddress: "an actual adress",
},
}],
}
@thinkingseriousã¯ããŒã«ã倧奜ãã§ãã ããã¥ã¡ã³ãã®æ¹åããšããžã±ãŒã¹ã®ã«ããŒãªã©ãç¶ããŠãã ãããðâ€ïž
@catamphetamineã®å察祚ã«æè¬ããŸãã setSubstitutionWrappers("{{", "}}");
ãå®è¡ããã®ã§ã substitutions
æ©èœããã®ã§ã¯ãªãããšæããŸããã ãããããã äœãèµ·ãã£ãã®ãããããªãã®ã§ç²ããŠãããããããŸãããã dynamicTemplateData
ã¯æ©èœããŸãã ãã£ã¡ã«ã±ãŒã¹ã§ããããšã«æ³šæããŠãã ãã_ïŒ@ kael-shipmanã®ã³ã¡ã³ããåç
§ïŒ_ã»ãšãã©ã®äŸã®ã¹ããŒã¯ã±ãŒã¹ã衚瀺ãããŸãã ãŸããsendgridã«ã¯TSã¿ã€ãã䜿çšããŠããŸãã å®çŸ©ã§äœ¿çšã§ããsnake_caseããŒã¯ãããŸããã
å©çšå¯èœãªã¿ã€ãã«ã€ããŠã PersonalizationJSON
ã¿ã€ãã§dynamic_template_data
ãèŠã€ããŸããã 以äžã䜿çšããå ŽåïŒ
import { send } from "@sendgrid/mail";
次ã«ãéä¿¡ã®æåã®ãã©ã¡ãŒã¿ãŒã確èªãããšã次ã®å®çŸ©ãæã€MailData
ã衚瀺ãããŸãã
export interface MailData {
// ...
personalizations?: PersonalizationData[],
// ...
}
次ã«ã次ã®2ã€ã®ã¿ã€ãã«ééããŸãã
export interface PersonalizationData {
// omitted keys...
dynamicTemplateData?: { [key: string]: string; };
customArgs?: { [key: string]: string };
sendAt?: number;
}
export interface PersonalizationJSON {
// same omitted keys...
dynamic_template_data?: { [key: string]: string; };
custom_args?: { [key: string]: string; };
send_at?: number;
}
æåŸã«ã dynamic_template_data
ã次ã®ããã«äžè²«ããŠæ©èœããããã«ãªããŸãã
{
templateId: "d-templateId",
dynamic_template_data: { name: "elton yet again"}, // <-- either here
personalizations: [{
to,
dynamic_template_data: { name: "Elton again" }, // <-- or here
}],
}
@thinkingseriousæããã«ãä¿®æ£ãå¿ èŠãªåå®çŸ©ã®åé¡ããããŸãã åŸã§PRãäœæãããããããŸããã
ããããŸãããããäžåºŠèª¿æ»ããå¿
èŠããããŸãã ä»ã§ã¯dynamicTemplateData
ãsubstitutions
æ©èœããªãã®ã§ãç§ã¯ããããããŠããŸãã
ã¢ããããŒãïŒ
ããã€ãã®ããŒãã«ãããããŸãããããããæ©èœããã以åã®ã³ã¡ã³ããæŽæ°ããŸããã
æåŸã«ã
dynamic_template_data
ã次ã®ããã«äžè²«ããŠæ©èœããããã«ãªããŸãã{ templateId: "d-templateId", dynamic_template_data: { name: "elton yet again"}, // <-- either here personalizations: [{ to, dynamic_template_data: { name: "Elton again" }, // <-- or here }], }
ããã¯ç§ã«ãšã£ãŠéèŠãªãã€ã³ãã§ããã toãšccã®é»åã¡ãŒã«ã§ç°ãªããã©ã³ã¶ã¯ã·ã§ã³ãã³ãã¬ãŒãã®ä»¶åãèšå®ããããšããŠããŸããã äžèšã®ããã«ãdynamic_template_dataããããã£ãããŒãœãã©ã€ãºé åå ã«é 眮ãããšæ©èœããŸããã
const msg = {
personalizations: [
{
to: req.body.to,
dynamic_template_data : {
subject: "Just to adsf...",
full_name_from: req.body.full_name_from,
full_name_to: req.body.full_name_to,
manager: req.body.manager,
message: req.body.message,
badge: req.body.badge,
badge_image: 'https://asdf' + req.body.badge_image
}
},
{
to: req.body.manager,
dynamic_template_data : {
subject: req.body.full_name_from + ' received a asdf asdf',
full_name_from: req.body.full_name_from,
full_name_to: req.body.full_name_to,
manager: req.body.manager,
message: req.body.message,
badge: req.body.badge,
badge_image: 'https://asdf' + req.body.badge_image
}
}
]
};
ç§ã®ããã«åãã解決çã¯ã以äžã«ç€ºãæ£ç¢ºãªæ¹æ³ã§ãdynamic_template_dataãããŒãœãã©ã€ãºãªããžã§ã¯ãå ã«é 眮ããããšã§ãã
"personalizations": [
{
"dynamic_template_data": {
"fullname": "full Name",
"useremail": ":[email protected]",
"userphone": "56456",
"usermsg": "tex fdsfgasdf t"
},
"to": [
{
"email": "[email protected]"
}
],
"cc": [
{
"email": "[email protected]"
}
]
}
]
æãåèã«ãªãã³ã¡ã³ã
ããã¥ã¡ã³ããæŽæ°ããŠãã ãã-v3APIã§çœ®æãæ©èœããªãã£ãçç±ãç解ããããã«1æéè²»ãããŸããã