7/24/2018 рдХреЛ, рд╣рдорд╛рд░реА рдЯреАрдо рдиреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рд▓реЗрди-рджреЗрди рд╕рдВрдмрдВрдзреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рд╕рд╛рдордЧреНрд░реА рд▓реЙрдиреНрдЪ рдХреАред рдпрд╣ рдЕрдм рд╣рдорд╛рд░реЗ рдореЗрд▓ рд╕реЗрдВрдб рдПрдкреАрдЖрдИ рдХреЗ v3 рд╕реЗ рдЕрдзрд┐рдХ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╕реВрдЪрд┐рдпреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐, рд╕рд╢рд░реНрдд рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд▓реЗрдВ!
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред
рдЖрдк рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдмрдирд╛рдХрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
рдЕрдм, рд╣рдореЗрдВ рдЗрд╕ рдПрд╕рдбреАрдХреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрд▓реНрдкрд░ рдХреЛрдб ( рдпрд╣ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ ) рдФрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред
рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ- рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдПрдХ рдШрдВрдЯрд╛ рдмрд┐рддрд╛рдпрд╛ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди 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 рдзрдиреНрдпрд╡рд╛рдж рджреЛрд╕реНрдд, рдпрд╣ рдЕрдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
рдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рдПрдХ рдФрд░ рдШрдВрдЯрд╛ рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдЬреЛ рдЙрдореНрдореАрдж рд╣реИ рдЙрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдХреБрдЫ
d-
рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреЛ substitutions
рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ CAMEL-CASE dynamicTemplateData
рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ, рдЬрд╣рд╛рдВ рд╡реЗ рд╕рд╛рдВрдк_рдХреЗрд╕ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХреИрдорд▓рдХреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ) )d-
рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ setSubstitutionWrappers
рдХреЛ рдЪреБрдкрдЪрд╛рдк рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ {{
рдФрд░ }}
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПрдЗрд╕ рдкрд░ рдЕрдкрдирд╛ рдПрдХ рдФрд░ рдШрдВрдЯрд╛ рдмрд░реНрдмрд╛рдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдЬреЛ рдЙрдореНрдореАрдж рд╣реИ рдЙрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдХреБрдЫ
- рдпрджрд┐ рдЖрдкрдХреА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЖрдИрдбреА
d-
рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рддреЛsubstitutions
рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рдЖрдкрдХреЛ CAMEL-CASEdynamicTemplateData
рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ, рдЬрд╣рд╛рдВ рд╡реЗ рд╕рд╛рдВрдк_рдХреЗрд╕ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХреИрдорд▓рдХреЗрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВ) )- рдпрджрд┐ рдЖрдкрдХрд╛ рдЯреЗрдореНрдкреНрд▓реЗрдЯ
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]"
}
]
}
]
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдХреГрдкрдпрд╛ рдЕрдкрдирд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ- рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдПрдХ рдШрдВрдЯрд╛ рдмрд┐рддрд╛рдпрд╛ рдХрд┐ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди v3 API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рдереЗред