
рдЖрдЬ рд╣рдо рддрдерд╛рдХрдерд┐рдд рдмрдирд╛рдПрдВрдЧреЗ
рдпреИрдВрдбреЗрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди (
рдпреИрдВрдбреЗрдХреНрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдирд╛рдо), рдЬреЛ
SendGrid рдореЗрд▓рд┐рдВрдЧ
рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде
рд╕рд╛рдЬрд┐рд╢ рдХрд░рддрд╛ рд╣реИ, рд╢рд╛рдВрддрд┐рдкреВрд░реНрд╡рдХ рд╕реЛ рд░рд╣реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ "рд╕рд╛рдмреБрди" рднреЗрдЬреЗрдЧрд╛ (
рдмрд╕ рдордЬрд╛рдХ рдХрд░ рд░рд╣рд╛ рд╣реИ - рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рд╕реНрдкреИрдо рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реИрдВ)ред
рдореИрдВ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╕рд░реНрд╡рд░реЛрдВ рдХрд╛ рд╡рд┐рд░реЛрдзреА (рд▓реЗрдХрд┐рди рдХрдЯреНрдЯрд░рддрд╛ рдХреЗ рдмрд┐рдирд╛), рдФрд░ рддрдерд╛рдХрдерд┐рдд рдХрд╛ рд╕рдорд░реНрдердХ рднреА рд╣реВрдВ
рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд (рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд) рд╕рдорд╛рдзрд╛рди, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд╕рд░реНрд╡рд░ рдХреЛ рдкреНрд░рд╢рд╛рд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ) рдХреИрд╕реЗ рдкрд╕рдВрдж рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ - рдЙрд╕ рд╕рдордп рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рд╡реЗ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдп рдПрдХ рдФрд░ рдорд╛рдорд▓рд╛ рд╣реИред рдХреЛрдИ рдореЗрд░реЗ рдмрд┐рдирд╛ рдЙрдирдХреА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдХреЗрд╡рд▓ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рддрд╛ рд╣реВрдВред рдЕрдХреНрдЯреВрдмрд░ 2019 рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдпреИрдВрдбреЗрдХреНрд╕ рдиреЗ рдЕрдкрдирд╛
рдпреИрдВрдбреЗрдХреНрд╕ рдХреНрд▓рд╛рдЙрдб рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкреЗрд╢ рдХрд┐рдпрд╛ - рдпрд╣ рд░реВрд╕реА рд╕рдВрдШ рдореЗрдВ рдкрд╣рд▓рд╛
рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд▓рдЧрддрд╛ рд╣реИред рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ - рдРрд▓рд┐рд╕ рдХреЗ рдХреМрд╢рд▓ рдХреЗ рд▓рд┐рдП рд╡реЗ рдЖрдо рддреМрд░ рдкрд░ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рддрдм рд╕реЗ рдореЗрд░реА рдкрд░рд┐рдзреАрдп рджреГрд╖реНрдЯрд┐ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВред
рдРрд╕реЗ рдкрд░рд┐рджреГрд╢реНрдп рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдРрд▓рд┐рд╕
рд░рд┐рдореЗрдореНрдмрд░ рдПрдВрдб рдлреЙрд░рдЧреЗрдЯ рд╕реНрдХрд┐рд▓, рдЬреЛ,
рдпрд╛рдВрдбреЗрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд╛рдорд╛рди рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП рдСрдлрд╝рд░ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдХрд▓реНрдк рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рднреБрдЧрддрд╛рди рдХрд░рддрд╛ рд╣реИред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рднреБрдЧрддрд╛рди рдкреНрд░рдгрд╛рд▓реА (
Yandex.Money рдХреЗ рд╕рд╛рде рднреНрд░рдо рдХреА рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рдорд╛рди) рднреБрдЧрддрд╛рди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдкрддреЗ рдкрд░ рднреЗрдЬрддреА рд╣реИ (рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕
рдпреИрдВрдбреЗрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдЧрд╛)
HTTP рдЕрдиреБрд░реЛрдз рдЬрд┐рд╕рдореЗрдВ рднреБрдЧрддрд╛рди рд╡рд┐рд╡рд░рдг, рдЬреИрд╕реЗ рдХрд┐ рд░рд╛рд╢рд┐, рдирд╛рдо, рдлреЛрди рдФрд░ рднреБрдЧрддрд╛рдирдХрд░реНрддрд╛ рдИрдореЗрд▓ред рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рд░рд╛рд╢рд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдЪрд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдХрд░реЗрдВ, рднреБрдЧрддрд╛рди рдХреА рд░рд╕реАрдж рдФрд░ рдЖрдЧреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ
рдПрд╕рдПрдордПрд╕ рдФрд░
рдИрдореЗрд▓ рднреЗрдЬреЗрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ
microservice ред
рдРрд▓рд┐рд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ
рдХреНрд▓рд╛рдЙрдб рдлрд╛рдпрд░рд╕реНрдЯрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ
рдпреИрдВрдбреЗрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рд╕рдм рдХреБрдЫ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИ (рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╣рдо рдПрдХ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ -
рдпрд╛рдВрдбреЗрдХреНрд╕ рдбреЗрдЯрд╛рдмреЗрд╕ )ред рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ
рдХреЛ рдПрд╕рдПрдордПрд╕ рднреЗрдЬрдиреЗ рдФрд░ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ
Yandex.Money рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдПрдХреАрдХреГрдд
рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдЕрдм рд╣рдо рдХреЗрд╡рд▓ рдкрддреНрд░ рднреЗрдЬрдиреЗ рдХрд╛ рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
1. SendGrid рдореЗрдВ рдПрдХ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдБ
рдЯрд┐рдкреНрдкрдгреАSendGrid рд╕рд┐рд░реНрдл рдореЗрд░реА рдкрд╕рдВрдж рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдмрдирд╛рдпрд╛ рд╣реИ, рдФрд░ рдореБрдЦреНрдп рдПрдХ рд╣реИ Node.js. рдХреЗ рд▓рд┐рдП рдПрдХ рддреИрдпрд╛рд░ рдПрд╕рдбреАрдХреЗ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ред рдЖрдк рдХреЛрдИ рдЕрдиреНрдп рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рд╕реЗрд╡рд╛ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо
рдЦрд╛рддрд╛ рдкрдВрдЬреАрдХрд░рдг рдкреГрд╖реНрда рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдкрдВрдЬреАрдХрд░рдг рдлреЙрд░реНрдо рднрд░рддреЗ рд╣реИрдВред рдлрд┐рд░
рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдЬрд╛рдПрдВ , рдиреЗрд╡рд┐рдЧреЗрд╢рди рдкреИрдирд▓ рдореЗрдВ
рдИрдореЗрд▓ рдПрдкреАрдЖрдИ -> рдПрдХреАрдХрд░рдг рдЧрд╛рдЗрдб , рдФрд░ рдореБрдЦреНрдп рдкреИрдирд▓ -
рд╡реЗрдм рдПрдкреАрдЖрдИ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░
рдЪреБрдиреЗрдВ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЪрд┐рддреНрд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЬреИрд╕рд╛ рд╣реИ:

рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ,
Node.js рдЪреБрдиреЗрдВ:

рдЕрдЧрд▓рд╛, рд╣рдо рдЕрдкрдиреА
рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖрддреЗ рд╣реИрдВ (рдпрд╣ рдХреЗрд╡рд▓ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд╣рдорд╛рд░реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХреЛрдб рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ; рдореИрдВ рд╕рд┐рд░реНрдл рдПрдХ рдЕрд╕рдВрдЧрдд
рдбреЗрдореЛ-рдПрдкреАрдЖрдИ-рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рд╣реВрдВ) рдФрд░
рдХреБрдВрдЬреА рдмрдЯрди
рдмрдирд╛рдПрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:

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

2. рдХреЛрдб рд▓реЗрдЦрди
рдФрд░ рдХреЛрдб рд╣реА, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд░реВрдк рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ - 22 рд▓рд╛рдЗрдиреЗрдВ!
# 8 рдкрдВрдХреНрддрд┐ рдореЗрдВ
, рдореЗрд░рд╛ рдореЗрд▓ рдПрдХ рд╣рд╛рд░реНрдбрдХреЛрдб рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реИ (рдФрд░ рдЗрд╕рд▓рд┐рдП рд╢рд░реНрдореАрд▓реА рд░реВрдк рд╕реЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) - рдЖрдк рдЕрдкрдирд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, рд╣рдо
рдИрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐
POST (
"Content-Type": "application/json"
) рд╡рд┐рдзрд┐
рдИрдореЗрд▓ рдХреНрд╖реЗрддреНрд░ (рд╕рдВрдкрддреНрддрд┐) рдкрд╛рд╕ рдХрд░рддреА рд╣реИ:
{ ... "email": "user@example.com", ... }
рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдореВрд▓реНрдп рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
const body = JSON.parse(event.body); const email = body.email;
рдФрд░ рдЕрдЧрд░
рдИрдореЗрд▓ рдлрд╝реАрд▓реНрдб рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝реАрд▓реНрдб рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ -
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ (рд╕рдВрдЧреНрд░рд╣):
{ ... "user": { ... "email": "user@example.com", ... }, ... }
рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдореВрд▓реНрдп рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
const { user } = event; const email = user.email;
рдпрджрд┐ URL рдореЗрдВ рдореЗрд▓ рдкрддреЗ рдХреЛ рдлрд╝рдВрдХреНрд╢рди (рддрдерд╛рдХрдерд┐рдд
URL рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ ) рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
https://functions.yandexcloud.net/123abc? email=user@example.com
https://functions.yandexcloud.net/123abc? email=user@example.com
рдИрдореЗрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рд╣реЛрдЧрд╛:
const email = event.queryStringParameters.email;
рдИрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдирд┐рд╣рд┐рдд рд╣реИ, рдЗрд╕ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╕рд╛рдзрд╛рд░рдг
рдпреИрдВрдбреЗрдХреНрд╕ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдореЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:
module.exports.handler = async function (event) { return { 'statusCode': 200, 'headers': { 'Content-Type': 'application/json; charset=utf-8' }, 'body': JSON.stringify(event), 'isBase64Encoded': false }; };
рдЕрдзрд┐рдХ (рд▓реЗрдХрд┐рди рдХрдо рд╕рдордЭрджрд╛рд░) рдпрд╣
рдпрд╣рд╛рдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛
рд╣реИ ред
рдЗрд╕рд▓рд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдмрдирд╛рдПрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдореЗрд▓рд░ ), рдЙрд╕ рдкрд░ рдЬрд╛рдПрдВ, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ, рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
mkdir mailer cd mailer npm init -y npm i @sendgrid/mail email-validator dotenv
рдпрд╣рд╛рдБ, рдХреЗрд╡рд▓
@ sendgrid / mail рдкреИрдХреЗрдЬ рдХреА
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред
рдИрдореЗрд▓-рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдкреИрдХреЗрдЬ рд╡реИрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдИрдореЗрд▓ рдкрддреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рддреБрд░рдВрдд рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдерд╛?), рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ (рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╣рдорд╛рд░реЗ рдмрд┐рдирд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд╣рдо рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ (рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдХреЛрдб рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред
Dotenv рдкреИрдХреЗрдЬ
рд░рдирд╡реЗ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ
.env рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди
Yandex рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЗрди рдЪрд░ рдХреЛ рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдХреИрд╕реЗ? - рдореИрдВ рдЗрд╕реЗ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред рдЗрд╕рд▓рд┐рдП,
dotenv рдкреИрдХреЗрдЬ рднреА рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░
.env рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрдирд╛рдИ
рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП , рдФрд░
index.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдб рдирд╣реАрдВ рдмрджрд▓рд╛
рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд╣рдордиреЗ рдпрд╣ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо
index.js рдФрд░
.env рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рддреЗ рд╣реИрдВ:
touch index.js touch .env
Index.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ,
рд╣рдо рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдП рдЧрдП рдХреЛрдб рдХреА 22 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдХреЗрд╡рд▓
# 8 рдкрдВрдХреНрддрд┐ рдореЗрдВ рдореЗрд▓ рдмрджрд▓реЗрдВ), рдФрд░
.env рдлрд╝рд╛рдЗрд▓ рдореЗрдВ (рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рдФрд░ рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди рдХреЗ) рдПрдХ рдЬреЛрдбрд╝реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ -
рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХрд╛ рдирд╛рдо / рдорд╛рди, рдЬреЛред рд╣рдореЗрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ
SendGrid рдХрдВрд╕реЛрд▓ рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ:
SENDGRID_API_KEY = рдЖрдкрдХрд╛ рдмрд╣реБрдд-рдЧреБрдкреНрдд-рдкреНрд░реЗрд╖рд┐рдд-рдПрдкрд┐-рдХреБрдВрдЬреАрдФрд░ рдпрджрд┐ рдЖрдк рдХрдо рдХрд╛рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХреНрд▓реЛрди рдХрд░реЗрдВ, рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git cd ycf-sendgrid-mailer-tutorial npm i
Index.js рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд▓рд╛рдЗрди
# 8 рдкрд░, рдореЗрд▓ рдмрджрд▓реЗрдВ; рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ
.env рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдФрд░
рдЗрд╕рдореЗрдВ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХрд╛ рдирд╛рдо / рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдереЛрдбрд╝рд╛ рдКрдкрд░ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
3. рддреИрдирд╛рдд
рдпрд╛рдВрдбреЗрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдФрд░
рдпреИрдВрдбреЗрдХреНрд╕ -рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рдП
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд▓реЗрдЦ
рдРрд▓рд┐рд╕ рдореЗрдВ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ - рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рджреЗрд╢ рдореЗрдВ рдЕрдЬреНрдЮрд╛рдиреА рдХреЛ рднреЗрдЬрддрд╛ рд╣реВрдВ, рдФрд░ рдмрд╛рдХреА рд╕рднреА (рдмрд╛рдХреА рдФрд░ рдЬреЛ рд▓реЛрдЧ рд▓реМрдЯрддреЗ рд╣реИрдВ) - рдЗрд╕рдХреЗ рдмрд╛рдж рдПрдХ рдЫреЛрдЯреА рд╕реА рдХреЙрдорд┐рдХ (рдпрд╛рдиреА) рдИред рдЪрд┐рддреНрд░реЛрдВ рдФрд░ рдкрд╛рда рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛)ред
рд╣рдо рдПрдХ
рдЬрд╝рд┐рдк рдЖрд░реНрдХрд╛рдЗрд╡ рдмрдирд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдореЗрд▓рд░.рдЬрд╝рд┐рдк рдХрд╣рддреЗ рд╣реИрдВ ), рдЬрд┐рд╕рдореЗрдВ рд╣рдо
рдиреЛрдб_рдореЙрдбреНрдпреВрд▓реНрд╕ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдФрд░
.env, index.js рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ - рдпреЗ рд╕рднреА рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рд╕реЗ рд╣реИрдВ:

рд╣рдо рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ ... рд╕рд╣реА рдврдВрдЧ рд╕реЗ -
рдореЗрд▓рд░ , рдмрд╛рдПрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдореЗрдиреВ рдореЗрдВ
рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рднрд░реЗрдВ, рдФрд░
рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣ рдЯреИрдм рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдВ
рдФрд░ рд╣рдорд╛рд░реЗ
рдореЗрд▓рд░ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВред
рдЬрд╝рд┐рдк рд╕рдВрдЧреНрд░рд╣:

рдФрд░ рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рдЙрд▓реНрд▓реЗрдЦрд┐рдд
рдПрдкреАрдЖрдИ-рдХреБрдВрдЬреА рдХреЛ рд╕реАрдзреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ
.env рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдФрд░
рдбреЙрдЯреЗрдирд╡ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛
рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣ рд╕рдм рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реВрдВред рд╡рд╣ рд╣реИ - рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ!

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

рдЕрдм рдЖрдк
SendGrid рдХрдВрд╕реЛрд▓ рдкрд░ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░
рд╕рддреНрдпрд╛рдкрди рдПрдХреАрдХрд░рдг рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд┐рд╕реНрдЯрдо рдЕрдкрдиреЗ рдЪреИрдирд▓реЛрдВ рдкрд░ рд╕рдм рдХреБрдЫ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдРрд╕реА рд╕реНрдХреНрд░реАрди рд╡рд╛рдкрд╕ рдЖрдиреА рдЪрд╛рд╣рд┐рдП:

рддреЛ, рджреЛрд╕реНрддреЛрдВ (рдФрд░ рд▓рдбрд╝рдХрд┐рдпреЛрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ) - рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИ! рдЕрдзрд┐рдХ рд▓реЗрдЦ рд╣реЛрдВрдЧреЗред рдпрд╣ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рддрд╛рдХрд┐ рд╕рджрд╕реНрдпрддрд╛ рди рдЫреВрдЯреЗред рдЖрдк рдпрд╣рд╛рдВ рдпрд╛
рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
4. рдбреЛрдирдЯреНрд╕
