Sendgrid-nodejs: рдЧрддрд┐рд╢реАрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 24 рдЬреБрд▓ре░ 2018  ┬╖  30рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sendgrid/sendgrid-nodejs

рд╕рд╛рд░рд╛рдВрд╢ рдЬрд╛рд░реА рдХрд░реЛ

7/24/2018 рдХреЛ, рд╣рдорд╛рд░реА рдЯреАрдо рдиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд▓реЗрди-рджреЗрди рд╕рдВрдмрдВрдзреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рд▓реЙрдиреНрдЪ рдХреАред рдпрд╣ рдЕрдм рд╣рдорд╛рд░реЗ рдореЗрд▓ рд╕реЗрдВрдб рдПрдкреАрдЖрдИ рдХреЗ v3 рд╕реЗ рдЕрдзрд┐рдХ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕реВрдЪрд┐рдпреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐, рд╕рд╢рд░реНрдд рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд▓реЗрдВ!

рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдмрдирд╛рдХрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рдЕрдм, рд╣рдореЗрдВ рдЗрд╕ рдПрд╕рдбреАрдХреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрд▓реНрдкрд░ рдХреЛрдб ( рдпрд╣ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ ) рдФрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рд╕реНрд╡реАрдХреГрддрд┐ рдорд╛рдирджрдВрдб

  • [[COMPLETE](https://github.com/sendgrid/sendgrid-nodejs/pull/691#issuecomment-407490342)] [рд▓реАрдЧреЗрд╕реА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рд╣реИ рдЙрд╕рдХреЗ рд╕рдорд╛рди рдПрдХ рд╕рд╣рд╛рдпрдХ рд▓рд╛рдЧреВ рдХрд░реЗрдВ](https://github.com /sendgrid/sendgrid-nodejs/blob/master/packages/mail/USE_CASES.md#transactional-templates)
  • рд╣реЗрд▓реНрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдП рдбрд╛рдпрдирд╛рдорд┐рдХ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП USE_CASES.md рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдФрд░ рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓реАрдЧреЗрд╕реА рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдирд╛рдо рджреЗрдВ

рдкреНрд░рд▓реЗрдЦрди

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ- рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдПрдХ рдШрдВрдЯрд╛ рдмрд┐рддрд╛рдпрд╛ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди v3 API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рдереЗред

рд╕рднреА 30 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ- рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдПрдХ рдШрдВрдЯрд╛ рдмрд┐рддрд╛рдпрд╛ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди v3 API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рдереЗред

рдЦрд░рд╛рдм рдЕрдиреБрднрд╡ @ рдЭрд╛рд░рд┐рд╕-рдХреЛрдб рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдорд╛рдлрд╝реАред

рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╡реЛрдЯ рдХреЛ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЬрд▓реНрдж рд╣реА рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреАрдЖрд░ # 711 рд╣реИред

рдпрд╣ рдмрд╣реБрдд рд╣реА рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдмрд╛рдд рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддреА рд╣реИред

рд╣рд╛рдп @ рдХреИрдЯрд╛рдордлреЗрдЯрд╛рдорд╛рдЗрди ,

рдХреЛрдб v6.3.1 рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж!

рд╢реБрднрдХрд╛рдордирд╛рдПрдВ,

рдПрд▓реНрдореЗрд░реВ

@ рдерд┐рдВрдХрд┐рдВрдЧрд╕реЗрд░рд┐рдпрд╕ рдУрд╣, рдХреВрд▓, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдХреЛ рдкрд╛рд░ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ред
рдореИрдВ рдЗрд╕реЗ рдЖрдЬрдорд╛рдЙрдВрдЧрд╛, thxред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдиреЛрдЯ: рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп dynamic_template_data рдмрдЬрд╛рдп substitutions ред

рдЕрдм рдЖрдкрдХреЛ "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди:" рдХреЛ "dynamic_template_data:" рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛

рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реИрдВрдбрд▓рдмрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирд╡рд╛рдкрд░реНрд╕" рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдЕрднреА рднреА dynamic_template_data рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, рдореБрдЭреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдФрд░ рдЗрд╕ рдзрд╛рдЧреЗ рдХреЛ рдЦреЛрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЦреЛрдЬ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рдШрдВрдЯреЗ рд▓рдЧреЗред (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдкрдХреЗ рдПрдкреАрдЖрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдиреЗ рдпрд╛ рддреЛ рдорджрдж рдирд╣реАрдВ рдХреА рд╣реИред
рд╕рд╛рде рд╣реА, рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрдирд╡рд╛рдкрд░реНрд╕ рдЧрддрд┐рд╢реАрд▓_рдЯреЗрдореНрдкрд▓реЗрдЯ_рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореЗрд░реЗ рд╕рдВрджреЗрд╢ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреБрдВрдЬреА рдореВрд▓реНрдп рдЬреЛрдбрд╝реА substitutionWrappers: ['*|', '|*'] рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдХреЗрд╡рд▓ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡рд░реНрд░реНрд╕ рднрд░реЗ рдЧрдП рдереЗред (рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рднреА рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рдмрд╛рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?)

рдореЗрд░реА рдХреНрд╖рдорд╛рдпрд╛рдЪрдирд╛ @ рдЬреЛрд╢-рдпреЛрдиреЛрдореА,

рдореИрдВрдиреЗ рдЖрдкрдХреЗ рдлрд╝реАрдбрдмреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдирдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП, рд╡реЗ рд╣реИрдВрдбрд▓рдмрд╛рд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд▓реАрдЧреЗрд╕реА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЕрднреА рднреА рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рд╢реБрднрдХрд╛рдордирд╛рдПрдВ,

рдПрд▓реНрдореЗрд░реВ

рдореБрдЭреЗ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

const msg = {
    to: email,
    from: sendGridMail,
    templateId: emailTemplate.confirmationEmail,
    dynamic_template_data: {
      firstName: firstName,
      lastName: lastName,
      link: link
    }
  };

@ рд╕реЛрдЪ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ

рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╣рдореЗрдВ рдпрд╣ рдмрддрд╛рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛рдВ рд╣реИ? рд╣рдореЗрдВ рдЖрдкрдХреА рдХреБрдВрдард╛рдУрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рддрд╛рдХрд┐ рд╣рдо рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХреЗрдВред

@ рдбреНрд░рд╛рд╡ 96 ,

рдХреНрдпрд╛ рдЖрдк рдпрд╣ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ?

рд╢реБрднрдХрд╛рдордирд╛рдПрдВ,

рдПрд▓реНрдореЗрд░реВ

рдЖрдк рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рдХреНрдпреЛрдВ рдЫреАрдирддреЗ рд╣реИрдВ ??

dynamic_template_data: {
      'foo-bar': 'wtf',
      'bar_baz': 'wtf',
      'baz.bro': 'wtf',
      'foo': 'wtf'
    }

рдХреЗрд╡рд▓ {{foo}} рдИрдореЗрд▓ рдореЗрдВ wtf рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдВред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ @larafale , рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕ рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЙрди рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЛ рдХрд╣рд╛рдВ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдПрдЪрдЯреАрдПрдордПрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ? рдореИрдВ рдирдП рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдмрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдФрд░ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рдирдорд╕реНрддреЗ,

рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдпрд╛ dynamic_template_data рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред
рдореЗрд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ {{fullname}} рдпрд╛ {{date}} рдЬреИрд╕реЗ рдЯреИрдЧ рд╣реИрдВ рдФрд░ рдпреЗ рдЧреБрдг send рдлрд╝рдВрдХреНрд╢рди рдкрд░ рднреЗрдЬреЗ рдЧрдП рд╣реИрдВ:

const msg = {
        to,
        from,
        templateId: template.id,
        dynamic_template_data: substitutions,
    };

    return sgMail.send(msg)

рдореИрдВрдиреЗ рдкреБрд╖реНрдЯрд┐ рдХреА рд╣реИ рдХрд┐ substitutions рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рд╣реА рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдЧреБрдг рд╣реИрдВ рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреЛрдИ рдЖрдЗрдбрд┐рдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ?

рдзрдиреНрдпрд╡рд╛рджред

@ рдЬрд┐рдпрд╛рдирдлреЗрд▓рд┐рдк93
рд╕рдВрд░рдЪрдирд╛ рд╕рд╣реА рд╣реИред рдореБрдЭреЗ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рдереАред
рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ @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 рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ, рдЬрд╣рд╛рдВ рд╡реЗ рд╕рд╛рдВрдк_рдХреЗрд╕ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХреИрдорд▓рдХреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ) )
  2. рдпрджрд┐ рдЖрдкрдХрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ d- рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ setSubstitutionWrappers рдХреЛ рдЪреБрдкрдЪрд╛рдк рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ {{ рдФрд░ }} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рдПрдХ рдФрд░ рдШрдВрдЯрд╛ рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдЬреЛ рдЙрдореНрдореАрдж рд╣реИ рдЙрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдХреБрдЫ

  1. рдпрджрд┐ рдЖрдкрдХреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЖрдИрдбреА d- рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреЛ substitutions рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ CAMEL-CASE dynamicTemplateData рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ, рдЬрд╣рд╛рдВ рд╡реЗ рд╕рд╛рдВрдк_рдХреЗрд╕ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХреИрдорд▓рдХреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ) )
  2. рдпрджрд┐ рдЖрдкрдХрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ d- рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ setSubstitutionWrappers рдХреЛ рдЪреБрдкрдЪрд╛рдк рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ {{ рдФрд░ }} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ dynamic_template_data рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдИрдбреА рдореЗрдВ рдЕрдХреНрд╖рд░ d-

рд╣рд╛рдВ, рдпрд╣ рд╕рд╛рдВрдк рдХреЗ рдорд╛рдорд▓реЗ рдХреА рдЪрд╛рдмрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ рджреЗрд╡реЛрдВ рдиреЗ рдКрдВрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИ (рдКрдкрд░ рдореЗрд░реА рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдореИрдВрдиреЗ рдЬреЛ рд▓рд╛рдЗрди рд▓рд┐рдВрдХ рдХреА рд╣реИ рдЙрд╕реЗ рджреЗрдЦреЗрдВ)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВ рд╕рднреА рдирдП рдХреЛрдб рдЙрдкрдпреЛрдЧ рдКрдВрдЯ рдорд╛рдорд▓реЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рд╣реИрд▓реЛ @ рдХреЗрд▓-рд╢рд┐рдкрдореИрди,

рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддреЗ рд╣реИрдВ!

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреЗрдЦрдиреЗ рдХреЛ рдорд┐рд▓рд╛ ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреА рдЦреЛрдЬ рдХреЗ рдЙрд╕ рдкрде рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдПрдХ рдШрдВрдЯрд╛ рдмрд░реНрдмрд╛рдж рд╣реБрдЖред рдореИрдВ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдРрд╕рд╛ рдлрд┐рд░ рдХрднреА рди рд╣реЛ рдФрд░ рдЦрд░рд╛рдм рдЕрдиреБрднрд╡ рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рд╢реБрднрдХрд╛рдордирд╛рдПрдВ,

рдПрд▓реНрдореЗрд░реВ

@ рдерд┐рдВрдХрд┐рдВрдЧрд╕реАрд░рд┐рдпрд╕ , рдЖрдкрдХреА рд╕рдордЭ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдФрд░ рд╡рд╣рд╛рдВ рдкрд░ рд╕реНрдирд┐рдкреЗрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдПрдХ loooooooooooooooong рджрд┐рди рдерд╛;)ред

рд╡реИрд╕реЗ рднреА, рд╕рдорд╕реНрдпрд╛ рдЗрддрдиреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рд╣реА (рдИрд╢) рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╣реАрдВ рдореМрдЬреВрдж рд╣реИ, рдпрд╣ рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреБрд░рд╛рдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЕрднреА рднреА Google рдЦреЛрдЬреЛрдВ рдореЗрдВ рдкрдХрдбрд╝реЗ рдЧрдП рд╣реИрдВред рдореИрдВрдиреЗ "sendgrid рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╝реАрд▓реНрдб" (рдЕрднреА-рдЕрднреА) рдХреА рдЦреЛрдЬ рдХреА рдФрд░ рдкрд╣рд▓рд╛ рдЧреИрд░-рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ , рдЬреЛ рд╕рднреА рд╕рдВрдХреЗрддреЛрдВ рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдирд╛ рд╣реИред рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рд╛рд░реВрдк рднреА рд╣реИрдВ ( -firstName- рдФрд░ %firstName% ) рдФрд░ рдХреЗрд╡рд▓ "рдЖрдк рдЬреЛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рд╡рд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдПрд╕рдбреАрдХреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ" рдХрд╣рддрд╛ рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдВрдж рд▓рдЧрддрд╛ рд╣реИ, рдХрд┐ рд╕рднреА рдПрд╕рдбреАрдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдордВрджрд┐рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВрдЧреЗ (рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЯреИрдЧ рдХреА рдХреЗрд╡рд▓ рдПрдХ рд╢реИрд▓реА рд╣реИ)ред

рдкреНрд░реЗрд╖рдХ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдЬрдмрдХрд┐ рдореИрдВ рдЬреЛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЙрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рднреНрд░рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдпрдо рд╣реИ, рдЕрдкрд╡рд╛рдж рдирд╣реАрдВред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рд╛рдпрдж рдЙрддрдирд╛ рд╣реА рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ рдмрд╛рдХреА рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреА рджреБрдирд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рднреА рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рдПрдХ рдорд╣реАрдиреЗ рдХрд╛ рд╕рдордп рд▓реЗрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдЗрд╕ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛рдПрдВ рдбрд╛рд▓реЗрдВ, рдЖрджрд┐, рдФрд░ рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд░реЗрдВ рд╢реАрд░реНрд╖ рдЧреВрдЧрд▓ рд╣рд┐рдЯред

рд╡реИрд╕реЗ рднреА, рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж!

рд╕рд╛рде рд╣реА, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрднреА рднреА рд╕рд╛рдВрдк рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ dynamic_template_data рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рд╕рд╣реА рд╣реИ, рддреЛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдб рд╕реНрд╡рдпрдВ рдЗрд╕реЗ рдХреИрдорд▓рдХреЗрд╕ рдореЗрдВ рдХреНрдпреЛрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд╛рдВрдк рдХрд╛ рдорд╛рдорд▓рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рд╣реИрд▓реЛ @ рдХреЗрд▓-рд╢рд┐рдкрдореИрди,

рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╡рд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╣рдорд╛рд░реЗ SendGrid SMTP API рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реИ, рди рдХрд┐ SendGrid v3 REST API рдЬрд┐рд╕рдХрд╛ рдпрд╣ SDK рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЖрдкрд╕реЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ, рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рдорд╛рд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЯреАрдо рдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рд▓рд╛рдКрдВрдЧрд╛ред

рд╣рдордиреЗ рдЕрднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рдУрдкрди рд╕реЛрд░реНрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдФрд░

рдореИрдВ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдХреИрдорд▓рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдбрдореЗ рдХреЛ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ред рдЗрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдзреНрдпрд╛рди рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЖрдкрдХреА рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдкреНрд░рд╢рдВрд╕рд╛ рдХреЗ рдкреНрд░рддреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЖрдкрдХреЛ рдХреБрдЫ рд╕реНрд╡реИрдЧ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЖрдирдВрдж рд▓реЗрдирд╛!

рд╢реБрднрдХрд╛рдордирд╛рдПрдВ,

рдПрд▓реНрдореЗрд░реВ

рдЕрд░реЗ рдорд╕реНрдд, рдзрдиреНрдпрд╡рд╛рдж :D

рдордВрдЧрд▓рд╡рд╛рд░, 18 рд╕рд┐рддрдВрдмрд░, 2018 рдХреЛ рд╢рд╛рдо 6:09 рдмрдЬреЗ рдПрд▓реНрдорд░ рдереЙрдорд╕ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рд╣реИрд▓реЛ @ рдХреЗрд▓-рд╢рд┐рдкрдореИрди https://github.com/kael-shipman ,

рд╡рд┐рд╕реНрддреГрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╡рд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣реИ
рд╣рдорд╛рд░реЗ рд╕реЗрдВрдбрдЧреНрд░рд┐рдб рдПрд╕рдПрдордЯреАрдкреА рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП, рди рдХрд┐ рд╕реЗрдВрдбрдЧреНрд░рд┐рдб v3 рдЖрд░рдИрдПрд╕рдЯреА рдПрдкреАрдЖрдИ рдЬреЛ рдпрд╣ рдПрд╕рдбреАрдХреЗ
рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдЖрдкрд╕реЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдореИрдВ рд▓реЗ рдЖрдКрдВрдЧрд╛
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рдорд╛рд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЯреАрдо рдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рд╣реИ
рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ред

рд╣рдордиреЗ рдЕрднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЕрдкрдиреЗ рдЦреБрд▓реЗ рд╕реНрд░реЛрдд рд╡рд╛рд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдФрд░ рдкреБрди: рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рд╣реИ
https://sendgrid.com/blog/how-to-get-the-most-from-sendgrids-new-knowledge-center/ ред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд▓рдЧреЗрдЧрд╛ред

рдореИрдВ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдХреИрдорд▓рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдбрдореЗ рдХреЛ рдареАрдХ рдХрд░ рджреВрдВрдЧрд╛ред рд╢реБрдХрд┐реНрд░рдпрд╛
рдЗрд╕реЗ рдкрдХрдбрд╝рдирд╛ рдФрд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рдзреНрдпрд╛рди рдореЗрдВ рд▓рд╛рдирд╛!

рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЖрдкрдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдкреНрд░рд╢рдВрд╕рд╛ рдХреЗ рдкреНрд░рддреАрдХ рдХреЗ рд░реВрдк рдореЗрдВ
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рд╣рдо рдЖрдкрдХреЛ рдХреБрдЫ рд╕реНрд╡реИрдЧ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ
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 рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдореЗрдВ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдЧрддрд┐рд╢реАрд▓ рдбреЗрдЯрд╛ рднреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдЬреИрд╕реЗ рдСрд░реНрдбрд░ рдирдВрдмрд░, рдСрд░реНрдбрд░ рдорд╛рддреНрд░рд╛, рдЗрддреНрдпрд╛рджрд┐ред рдореБрдЭреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕реЗ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдиреЛрдЯ: рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп dynamic_template_data рдмрдЬрд╛рдп substitutions ред

@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",
        },
    }],
}

@ рдерд┐рдВрдХрд┐рдВрдЧрд╕реАрд░рд┐рдпрд╕ рдЯреВрд▓ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИред рдХреГрдкрдпрд╛ рдбреЙрдХреНрд╕ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ, рдПрдЬ-рдХреЗрд╕ рдЖрджрд┐ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдВред тЭдя╕П


рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:

@catamphetamine рдбрд╛рдЙрдирд╡реЛрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдореБрдЭреЗ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ substitutions рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ setSubstitutionWrappers("{{", "}}"); ред рдХрд╛рд╢, рдирд╣реАрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ рдореИрдВ рдердХ рдЧрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди dynamicTemplateData рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред рдзреНрдпрд╛рди рджреЗрдВ, рдХрд┐ рдпрд╣ рдХреИрдорд▓рдХреЗрд╕ _(@ kael-shipman comment рджреЗрдЦреЗрдВ)_ рдореИрдВ рд╕рд╛рдВрдк рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддрд╛ рд╣реВрдВред рд╕рд╛рде рд╣реА, рдореИрдВ рдкреНрд░реЗрд╖рдХ рдХреЗ рд▓рд┐рдП рдЯреАрдПрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдИ рд╕реНрдиреЗрдХ_рдХреЗрд╕ рдХреБрдВрдЬреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред


рдЕрджреНрдпрддрди реи:

рдЙрдкрд▓рдмреНрдз рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред рдореБрдЭреЗ dynamic_template_data PersonalizationJSON рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдорд┐рд▓рд╛ред рдпрджрд┐ рдЖрдк рдирд┐рдореНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
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
    }],
}

@ рдерд┐рдВрдХрд┐рдВрдЧрд╕реАрд░рд┐рдпрд╕ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдЯрд╛рдЗрдк рдбреЗрдлрд┐рдирд┐рд╢рди рдореБрджреНрджреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдмрд╛рдж рдореЗрдВ рдкреАрдЖрд░ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред рдореИрдВ рд╕реНрддрдмреНрдз рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рди рддреЛ 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
    }],
}

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдерд╛ред рдореИрдВ рдмрдирд╛рдо рд╕реАрд╕реА рдИрдореЗрд▓ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЗрдирджреЗрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╡рд┐рд╖рдп рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдпрд╣ рддрдм рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ рдЬрдм рдореИрдВрдиреЗ рдКрдкрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реИрдпрдХреНрддрд┐рдХрд░рдг рд╕рд░рдгреА рдХреЗ рдЕрдВрджрд░ 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
             }
            }
          ]
    };

рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рдорд╛рдзрд╛рди рдбрд╛рдпрдирд╛рдорд┐рдХ_рдЯреЗрдореНрдкрд▓реЗрдЯ_рдбреЗрдЯрд╛ рдХреЛ рд╡реИрдпрдХреНрддрд┐рдХрд░рдг рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЕрдВрджрд░ рдареАрдХ рдиреАрдЪреЗ рджреЗрдЦреЗ рдЧрдП рддрд░реАрдХреЗ рд╕реЗ рд░рдЦ рд░рд╣рд╛ рд╣реИ:

    "personalizations": [
        {
              "dynamic_template_data": {
            "fullname": "full Name",
            "useremail": ":[email protected]",
            "userphone": "56456",
            "usermsg": "tex fdsfgasdf t"
    },
            "to": [
                {
                    "email": "[email protected]"
                }
            ],
            "cc": [
                {
                    "email": "[email protected]"
                }
            ]
        }
]
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

egges picture egges  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wooyah picture wooyah  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

polkhovsky picture polkhovsky  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

umarhussain15 picture umarhussain15  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

amlcodes picture amlcodes  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ