Sendgrid-nodejs: рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 28 рдЬреВрди 2016  ┬╖  75рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sendgrid/sendgrid-nodejs

рдирдорд╕реНрдХрд╛рд░,

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд░реАрдбрдореА рдкрд░ рдПрдХ рдЖрд╕рд╛рди рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рд╣реЛрдЧрд╛, рдХреБрдЫ рд╕рд░рд▓ рдХреЗ рд░реВрдк рдореЗрдВ https://sendgrid.com/blog/migrating-app-sendgrids-template-engine/ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ tbh рдЕрдЧрд░ 30 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ Sendgrid рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдкрдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред

рдЪреАрдпрд░реНрд╕,
рдФрд░ рдЗрд╕ рдЧреБрд╕реНрд╕реЗ рдореЗрдВ рд╢реЗрдЦрд╝реА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ

ps: рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рд╣реИ, рдЬреИрд╕рд╛ рдореИрдВ https://sendgrid.com/docs/Integrate/Code_Examples/v2_Mail/nodejs.html , рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реВрдВ

help wanted community enhancement

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

@thinkingsouble рдореБрдЭреЗ рдЖрдЦрд┐рд░ рд╕рдордЭ рдореЗрдВ рдЖ рдЧрдпрд╛ рдХрд┐ v3 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд╕рднреА Sendgrid рд╣реЗрд▓реНрдкрд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдХреНрдпрд╛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ ... рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдИрдореЗрд▓ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ: P

рдореИрдВ Sendgrid рдХреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдУрд╡рд░рд╣рд╛рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡рд░рдг рднреЗрдЬрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, sendgrid-mailer ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

https://github.com/sendgrid/sendgrid-nodejs#with -mail-helper-class

рдпрд╣ рд╕рд┐рд░реНрдл "рдореИрдВ рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ" рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 8 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рдХреА 15 рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдкреАрдЖрдИ рд╣реЗрд▓реНрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓, рдЖрд╕рд╛рди рдХреЗ рдкреАрдЫреЗ рд╕рднреА рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧреЛрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛, рддрд╛рдХрд┐ Sendgrid рдХреЗ рд╕рд╛рде рдИрдореЗрд▓ рднреЗрдЬрдирд╛ рдЖрд╕рд╛рди рдФрд░ рдордЬрд╝реЗрджрд╛рд░ рд╣реЛ рдЬрд╛рдП :)

рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЙрджрд╛рд╣рд░рдг рдмрди рдЬрд╛рддрд╛ рд╣реИ:

//Load mailer and set API key (only needed once)
const mailer = require('sendgrid-mailer').config(API_KEY);

//Create email data 
const email = {
  to: '[email protected]',
  from: 'Someone <[email protected]>',
  subject: 'Hello world',
  text: 'Hello plain world!',
  html: '<p>Hello HTML world!</p>',
};

//Send away 
mailer.send(email); //Returns promise 

рдЕрдиреБрд░реЛрдз рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ Sendgrid рдХреЗ рд╕рд╣рд╛рдпрдХреЛрдВ рдХрд╛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдХрдИ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдЧреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ Sendgrid рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА Sendgrid Mail рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ / рд╕реЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП / рдЬреИрд╕реЗ Name <[email protected]> рд▓рд┐рдП рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╛рд░реВрдк рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдирд╛рдо рдпрд╛ рдИрдореЗрд▓ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде README рджреЗрдЦреЗрдВред

рд╡рд╣рд╛рдБ рд╢рд╛рдпрдж рдЕрднреА рднреА рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдпрд╣рд╛рдБ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрд┐рд╕рд╕реЗ рд▓реЛрдЧ Sendgrid API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд╡рд╣ рдЗрд╕рд╕реЗ рдЕрднрд┐рднреВрдд рд╣реБрдП рдмрд┐рдирд╛ рдирд╣реАрдВ рдерд╛ред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЖрддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд╢рд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╕рд░рд▓ рдПрдкреАрдЖрдИ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ :)

cc @julesbou рдереЛрдбрд╝реА рджреЗрд░ рд╕реЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

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

рдирдорд╕реНрдХрд╛рд░ @julesbou ,

рдирд╛рд░рд╛рдЬ рд░реЗрдВрдЯ рдореЗрд░реЗ рд╕рд╛рде рдареАрдХ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЕрдЧрд░ рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рдорд╛рдзрд╛рди рд╕рдВрд▓рдЧреНрди рд╣реИрдВ :)

рд╣рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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

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

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

рд╣рдо рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? рд╕рдм рдореИрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ рдирд╛рдо рд╕реЗ рд╕реЗрдЯ рд╣реИ ??

@jsgandalf ,

рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ: https://github.com/sendgrid/sendgrid-nodejs#hello -email, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ: https://github.com/sendgrid/sendgrid-nodejs/blob-master/examples/helpers/mail/exampleред js # L4

рдЖрдк рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ json рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/mail/mail.js#L31 (рдпрд╣рд╛рдБ json рдХрд╛ рдЕрд╡рд▓реЛрдХрди рд╣реИ: https: / /sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html]

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

рдмрд╣реБрдд рдорджрджрдЧрд╛рд░! рдпрд╣ рд░реАрдбрдореА рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП !!

@jsgandalf @thinkingsouble рдореИрдВ рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реВрдВред рдореИрдВ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдпрд╣рд╛рдБ рдЙрджрд╛рд╣рд░рдг рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд▓рдЧреЗред рдореИрдВ рдИрдореЗрд▓ рдкрддреЗ рд╕реЗ "рдЯреВ" рдФрд░ "рд╕реЗрдЯ" рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ, рдФрд░ рдпрд╣ рдХреЛрдб рдореЗрд░рд╛ рдИрдореЗрд▓ рднреА рдирд╣реАрдВ рднреЗрдЬрддрд╛ рд╣реИред рдореИрдВ рдкрд┐рдЫрд▓реЗ рддреАрди рджрд┐рдиреЛрдВ рд╕реЗ рдЕрдкрдирд╛ рд╕рд┐рд░ рдЦреБрдЬрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред рдХреЛрдИ рдорджрдж?

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ @bcootner рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдкрдХрд╛ рдЕрдиреБрд░реЛрдз рдЗрд╕ рдХрддрд╛рд░ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдЬрд▓реА рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЗрд╕ рд╕рдордп рдореЗрдВ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА:

var sg = require('sendgrid').SendGrid(process.env.SENDGRID_API_KEY)

function helloTemplate(){
  var helper = require('sendgrid').mail

  from_email = new helper.Email("[email protected]")
  to_email = new helper.Email("[email protected]")
  subject = "Hello World from the SendGrid Node.js Library"
  content = new helper.Content("text/plain", "some text here")
  mail = new helper.Mail(from_email, subject, to_email, content)
  // The constructor above already creates our personalization object
  // -name- and -card- are substitutions in my template
  substitution = new helper.Substitution("-name-", "Example User")
  mail.personalizations[0].addSubstitution(substitution)
  substitution = new helper.Substitution("-card-", "Denver")
  mail.personalizations[0].addSubstitution(substitution)
  mail.setTemplateId("YOUR_TEMPLATE_ID")
  return mail.toJSON()
}

function send(toSend){
  //console.log(JSON.stringify(toSend, null, 2))
  //console.log(JSON.stringify(toSend))

  var sg = require('sendgrid').SendGrid(process.env.SENDGRID_API_KEY)

  var requestBody = toSend
  var emptyRequest = require('sendgrid-rest').request
  var requestPost = JSON.parse(JSON.stringify(emptyRequest))
  requestPost.method = 'POST'
  requestPost.path = '/v3/mail/send'
  requestPost.body = requestBody
  sg.API(requestPost, function (response) {
    console.log(response.statusCode)
    console.log(response.body)
    console.log(response.headers)
  })
}

send(helloTemplate())

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдкрд╣реБрдВрдЪреЗрдВред

@ рд╕рдордп рдФрд░ рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣реИрдВ:

    var  sg = require('sendgrid').SendGrid("SG.**** .. ***6o");

    function welcomeTemplate() {
         console.log("template")
         var helper = require('sendgrid').mail
         from_email = new helper.Email("[email protected]")
         to_email = new helper.Email("[email protected]")
         subject = "Hello World from the SendGrid Node.js Library"
         content = new helper.Content("text/plain", "some text here")
         mail = new helper.Mail(from_email, subject, to_email, content)
         substitution = new helper.Substitution("-Name-", "bcootner")
         mail.personalizations[0].addSubstitution(substitution)
         mail.setTemplateId("5a****-*******-******-9")    //The ID of my Transactional Template
         return mail.toJSON()
}

function sendMail(toSend) {
     console.log("Send")
     var sg = require('sendgrid').SendGrid("SG.***....****o")
     var requestBody = toSend
     var emptyRequest = require('sendgrid-rest').request
     var requestPost = JSON.parse(JSON.stringify(emptyRequest))
     requestPost.method = 'POST'
     requestPost.path = '/v3/mail/send'
     requestPost.body = requestBody
     sg.API(requestPost, function (response) {
            console.log(response.statusCode)
            console.log(response.body)
            console.log(response.headers)
       })
}

рдФрд░ рдлрд┐рд░ рдореИрдВ sendMail(welcomeTemplate()) рдХреЗ рд╕рд╛рде рдЗрд╕ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред "рдЯреЗрдореНрдкреНрд▓реЗрдЯ" рдФрд░ "рд╕реЗрдВрдб" рд▓реЙрдЧ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕реНрдЯреЗрдЯрд╕рдХреЛрдб, рдмреЙрдбреА рдпрд╛ рд╣реЗрдбрд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рдХреЛрдИ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред

рдмрд╛рдж requestPost.body = requestBody рдЖрдк рдХреГрдкрдпрд╛ рд╕рдХрддрд╛ рд╣реИ console.log(JSON.stringify(requestBody)) рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рддреБрдо рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИред

@thinkingsрдиреБрдорд╛ рдХреБрдЫ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рд╛рдЗрди var emptyRequest = require('sendgrid-rest').request рдмрд╛рдж рд▓реЙрдЧ рдореЗрдВ рдХреБрдЫ рднреА рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдкрд╣рд▓реЗ "рдЯреЗрдореНрдкреНрд▓реЗрдЯ" рд▓реЙрдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд▓рдЧрднрдЧ 5 рдорд┐рдирдЯ рдмрд╛рдж "рд╕реЗрдВрдб" рдкреНрд░рд┐рдВрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреЗ рдЧрдП рдлрдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЗрдХ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рд╡реЗ рдХрд╛рдо рдареАрдХ рд╣реЛрддреЗ рд╣реИрдВ)ред рдХреНрдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрдпрд╛рди рдХреЗ рд▓рд┐рдП рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ, рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл npm install sendgrid

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдБ:

A. рдирд┐рдореНрди рдкреЗрд▓реЛрдб рдХреЗ рд╕рд╛рде post.json рдирд╛рдордХ рдлрд╛рдЗрд▓ рдмрдирд╛рдПрдВ:

{"content":[{"type":"text","value":"Hello, World!"}],"from":{"email":"[email protected]"},"personalizations":[{"subject":"Hello, World!","to":[{"email":"[email protected]"}]}]}

B. рдЙрджрд╛рд╣рд░рдг рдИрдореЗрд▓ рдмрджрд▓реЗрдВ

C. рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБ:

curl -X "POST" "https://api.sendgrid.com/v3/mail/send" \
        -H "Authorization: Bearer $SENDGRID_API_KEY"  \
        -H "Content-Type: application/json" \
        -d @post.json

D. рдпрд╛ рддреЛ $ SENDGRID_API_KEY рдХреЛ рдЕрдкрдиреЗ API рдХреБрдВрдЬреА рд╕реЗ рдмрджрд▓реЗрдВ, рдпрд╛ рдЕрдкрдиреА API рдХреБрдВрдЬреА рдХреЛ SENDGRID_API_KEY рдирд╛рдордХ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

@thinkingsouble рдореБрдЭреЗ рд╡рд╣ рдЯреЗрд╕реНрдЯ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдореИрдВ рд╣реИрд▓реЛ рдЯреЗрд╕реНрдЯ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдХреНрд╖рдо рдерд╛, рдпрд╣ рд╕рд┐рд░реНрдл рдЗрди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ var emptyRequest = require('sendgrid-rest').request рдХреЛ var emptyRequest = sg.emptyRequest() var emptyRequest = require('sendgrid-rest').request рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рд╡рд╣ рдИрдореЗрд▓ рднреЗрдЬрддрд╛ рд╣реИ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдбрд┐рдЬрд╝рд╛рдЗрди рдпрд╛ рдХрд┐рд╕реА рднреА рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдХреЛрдИ рд╕реНрд╡рд░реВрдкрдг рдирд╣реАрдВ рд╣реИред

@bcootner ,

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЖрдкрдХреА рддреНрд░реБрдЯрд┐ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрд╕ рдЪрд░рдг рдХреА рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЪреВрдВрдХрд┐ рдЖрдк рдХрд░реНрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдИрдореЗрд▓ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреА рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдЕрдЪреНрдЫреА рд╣реИред рд╢рд╛рдпрдж рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдИрдбреА рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рд╣реИ?

рдпрджрд┐ рдЖрдк mail.setTemplateId("5a****-*******-******-9") рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рдИрдореЗрд▓ рднреЗрдЬрддрд╛ рд╣реИ?

@thinkingserious рддреЛ рдЕрдЧрд░ рдореИрдВ setTemplateID рдХреЛ рджреВрд░ рдпрд╣ рдкрд░реАрдХреНрд╖рдг "SendGrid Node.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдирдорд╕реНрддреЗ рд╡рд┐рд╢реНрд╡" рднреЗрдЬрддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдореЗрд░рд╛ рд╕рдВрдкрд╛рджрди рджреЗрдЦрд╛ рд╣реИ, рд▓реЗрдХрд┐рди var emptyRequest = require('sendgrid-rest').request рдХреЛ var emptyRequest = sg.emptyRequest() рдХреЗ рд╕рд╛рде рдмрджрд▓рдХрд░ рдореЗрд░реЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдкрд╛рда рднреЗрдЬрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕реНрд╡рд░реВрдкрдг рдирд╣реАрдВ рд╣реИ (рдХреЛрдИ рдлрд╝реЙрдиреНрдЯ рдирд╣реАрдВ, рдХреЛрдИ рдЪрд┐рддреНрд░ рдирд╣реАрдВ)ред рдореБрдЭреЗ рдХрдВрд╕реЛрд▓ рд╕реЗ рдЕрдм рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд┐рдВрдЯ рдЖрдЙрдЯ рдорд┐рд▓рддрд╛ рд╣реИред

2016-07-13T00:01:07.514157+00:00 app[web.1]:   date: 'Wed, 13 Jul 2016 00:01:07 GMT',
2016-07-13T00:01:07.514159+00:00 app[web.1]:   connection: 'close',
2016-07-13T00:01:07.514157+00:00 app[web.1]:   date: 'Wed, 13 Jul 2016 00:01:07 GMT',
2016-07-13T00:01:07.514158+00:00 app[web.1]:   'content-type': 'text/plain; charset=utf-8',
2016-07-13T00:01:07.502390+00:00 app[web.1]: 202
2016-07-13T00:01:07.502454+00:00 app[web.1]: 
2016-07-13T00:01:07.514155+00:00 app[web.1]: { server: 'nginx',
2016-07-13T00:01:07.514159+00:00 app[web.1]:   connection: 'close',
2016-07-13T00:01:07.514161+00:00 app[web.1]:   'x-frame-options': 'DENY' }

рдХреБрдЫ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ 'рдкрд╛рда / рд╕рд╛рджреЗ' рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж!

рд╣реЗ @bcootner , рдореИрдВрдиреЗ рдЕрднреА рднреА рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рд┐рд░ рдХреЛ рдЦрд░реЛрдВрдЪ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рд╛рдорд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рд╣реИ:

_рдкрд░рдо_

  • рд╕реЗ (рдЬреИрд╕реЗ '[email protected]')
  • , (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП '[email protected]')
  • рд╡рд┐рд╖рдп (рдЬреИрд╕реЗ 'рдкрд░реАрдХреНрд╖рдг рд╡рд┐рд╖рдп')
  • рд╕рдВрджреЗрд╢ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 'рдкрд░реАрдХреНрд╖рдг рд╕рдВрджреЗрд╢')
  • рдЯреЗрдореНрдкрд▓реЗрдЯ (рдЯреЗрдореНрдкрд▓реЗрдЯ рдЖрдИрдбреА рдЬреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)
  • templateVariables (рдСрдмреНрдЬреЗрдХреНрдЯ, рдЬрд╣рд╛рдВ рдХреБрдВрдЬреА - рдИрдореЗрд▓ рдореЗрдВ рдЪрд░, рдорд╛рди - рдорд╛рди рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП) { ":name": "someName", ":email": "someEmail" } ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ :email рдФрд░ :name рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдИрдореЗрд▓ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдЕрдкрдиреЗ рдЪрд░ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд┐рдП рд╣реИрдВ, рдпрд╣ -email- рдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЛ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
  • рд╕рдлрд▓рддрд╛ рдХреЙрд▓рдмреИрдХ
  • рддреНрд░реБрдЯрд┐ рдХреЙрд▓рдмреИрдХ
    let sendTemplateMail =  (from, to, subject, message, template, templateVariables, successCallback, errorCallback) => {
        var sg = require('sendgrid').SendGrid(process.env.SENDGRID_API_KEY),
            helper = require('sendgrid').mail,
            content_text = new helper.Content("text/plain", message),
            content_html = new helper.Content("text/html", message),
            request = sg.emptyRequest(),
            email_to = new helper.Email(to),
            email_from = new helper.Email(from),
            mail = new helper.Mail(email_from, subject, email_to, content_text),
            personalization = new helper.Personalization();

        personalization.addTo(email_to);
        personalization.setSubject(subject);

        mail.setTemplateId(template);
        mail.addContent(content_html);

        for(var key in templateVariables) {
            if(templateVariables.hasOwnProperty(key)) {
                var substitution = new helper.Substitution(key, templateVariables[key]);
                personalization.addSubstitution(substitution);
            }
        }

        mail.addPersonalization(personalization);

        request.method = 'POST';
        request.path = '/v3/mail/send';
        request.body = mail.toJSON();

        sg.API(request, (json) => {
            if(json.statusCode >= 300) {
                errorCallback(json);
            } else {
                successCallback(json);
            }
        });
    }

рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рдмреБрдирд┐рдпрд╛рджреА, рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рд░рд┐рдлреИрдХреНрдЯрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░рд╛ рдХрд╛рд░реНрдп рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдЧрд╛ :)

@ByEmke рдЖрдкрдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╣рдореЗрдВ [email protected] рдкрд░ рдИрдореЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рдЯреА-рд╢рд░реНрдЯ рдХрд╛ рдЖрдХрд╛рд░ рдФрд░ рдореЗрд▓рд┐рдВрдЧ рдкрддрд╛?

рдкреНрд░рд▓реЗрдЦрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдПрдХ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдЗрд╕ рд░рд╛рд╕реНрддреЗ рдкрд░ рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдореЗрд▓ рд╕рд╣рд╛рдпрдХ рдХреЗ рд▓рд┐рдП рднреА рд╣реИред рд╣рдо рдЖрдкрдХреА рд╕рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХрддреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдмрдбрд╝рд╛ рднреНрд░рдо рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдордЧреНрд░реА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдмрд╣реБрдд рдЬрд▓реНрдж (рджрд┐рди) рдмрджрд▓ рдЬрд╛рдПрдЧрд╛ред

@bcootner рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ content_html = new helper.Content("text/html", message) ред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ рджреВрд░ рд╣реЛ рд░рд╣реА рд╣реИ, рд╣рдорд╛рд░реА рдЯреАрдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓ рд░рд╣реА рд╣реИ рддрд╛рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рд╛рдордЧреНрд░реА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП @ByEmke @thinkingsouble рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рдЗрд╕реЗ рдкрд┐рдЫрд▓реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:

 var sg = require('sendgrid').SendGrid("SendGrid API Key" or <environment variable>)

function sendEmail(tempID){
    var helper = require('sendgrid').mail;
    from_email = new helper.Email("[email protected]")
    to_email = new helper.Email("[email protected]")
    subject = "Dummy Subject"
    content = new helper.Content("text/html", "dummy content")
    mail = new helper.Mail(from_email, subject, to_email, content)

    substitution = new helper.Substitution("-name-", "User's Name")
    mail.personalizations[0].addSubstitution(substitution)
    mail.setTemplateId(tempID)
    var requestBody = mail.toJSON()
    var requestPost = JSON.parse(JSON.stringify(sg.emptyRequest()))
    requestPost.method = 'POST'
    requestPost.path = '/v3/mail/send'
    requestPost.body = requestBody
    sg.API(requestPost, function (response) {
       console.log(response.statusCode)
       console.log(response.body)
       console.log(response.headers)
  })
}

рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж!

рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбреЙрдХреНрд╕ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдПред

рдореИрдВ рдЕрдиреБрд░реЛрдз рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ {}} рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рд╕рд╣рд╛рдпрдХ () рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИ (рдореЗрд░реЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо)ред

рдореИрдВрдиреЗ рдбреЙрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ, рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкрд░рдЦрдиреЗ, рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдФрд░ рдлрд┐рд░ рд╕реЗ рдпрд╣рд╛рдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рдордп рдмрд┐рддрд╛рдпрд╛ рдХрд┐ рдЖрдкрдХреЛ _do_ рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рд╛рдордЧреНрд░реА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдбреЙрдХреНрд╕ рд░рд╛рдЬреНрдп рдЕрдиреНрдпрдерд╛ред рдЕрд░реНрдШред рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рди рдЖрдкрдХреЛ рдкрд╛рдЧрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡реИрд╕реЗ рднреА @ByEmke рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП

@peterkuiper (рдпрд╛ рдореБрдЭреЗ рдПрдбрдо :) рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП)

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

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рдЖрдк рдЗрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? https://github.com/sendgrid/sendgrid-nodejs/blob/master/USAGE.m

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

@thinkingsouble рдореИрдВ sendgrid.com (рдпрд╛рдиреА https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html) рдкрд░ рдбреЙрдХреНрд╕

рдореИрдВ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рдЙрд╕ рдЪреАрдЬрд╝ рдХрд╛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдорд┐рд▓рд╛, рдЬреЛ рдореБрдЭреЗ рднреНрд░рд╛рдордХ рд▓рдЧрддрд╛ рд╣реИ:

var request = sg.emptyRequest()
request.queryParams["start_time"] = '1'
request.queryParams["limit"] = '1'
request.queryParams["end_time"] = '1'
request.queryParams["offset"] = '1'
request.method = 'GET'
request.path = '/v3/suppression/blocks'
sg.API(request, function (response) {
    console.log(response.statusCode)
    console.log(response.body)
    console.log(response.headers)
  })

рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ start_time, limit, end_time рдФрд░ рдСрдлрд╕реЗрдЯ рд╣реИрдВ рдФрд░ рдЗрдирдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ? рдХреНрдпрд╛ рдЕрдзрд┐рдХ рдХреНрд╡реЗрд░реАрдкрд░рд╛рдо рд╣реИрдВ? рдФрд░ рдпрд╣ рдЕрдиреБрд░реЛрдз рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧрд╛рдЗрдб рдХрд╛ рд▓рд┐рдВрдХ рд╣реИ (рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) рдЬрдмрдХрд┐ рдПрдкреАрдЖрдИ рдбреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдЬреЛ https://sendgrid.com/docs/API_Reference/Web_API_v3.blocks.html рддрдХ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ

рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рд╣реЛрдЧреА рдХрд┐ рдЖрдкрдХреЛ рдХреМрди рд╕реА рдЬрд╛рдирдХрд╛рд░реА рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдПред

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ @peterkuiper!

рдореИрдВ рдЖрдкрдХреЛ рдмрд╛рд╣рд░ рднреА рд╕реНрд╡рд╛рд╣рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдЕрдкрдирд╛ рдЯреА-рд╢рд░реНрдЯ рдЖрдХрд╛рд░ рдФрд░ рдореЗрд▓рд┐рдВрдЧ рдкрддрд╛ [email protected] рдкрд░

рд╣рдо рдХреНрд╡реЗрд░реА рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП USAGE.md рдбреЙрдХреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВрдЧреЗред

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

@ рд╕реЛрдЪ-рд╕рдордЭрдХрд░ рд╢рд╛рдВрдд, рдзрдиреНрдпрд╡рд╛рдж :) рдИрдореЗрд▓ рднреЗрдЬрд╛ рдЧрдпрд╛!

рдЬрдм рдореИрдВ рдЙрд╕ рдкрд░ рдерд╛, рдореИрдВрдиреЗ рдХреБрдЫ рдФрд░ рджреЗрдЦрд╛ рдЬреЛ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдореЗрд░реА рдЯреАрдо рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ)ред рдореЗрд░реЗ рдПрдХ рд╕рд╛рдереА рдиреЗ рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдП (рдпрд╛рдиреА рдИрдореЗрд▓ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ) рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд-рдПрд▓рдПрдордмреА, рд╕рддреНрдпрд╛рдкрди-рдПрди рдЖрджрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ред рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореВрд▓ рд░реВрдк рд╕реЗ рдХреЗрд╡рд▓ рдкрд╛рда (рднрд┐рдиреНрди рднрд╛рд╖рд╛) рдХреЗ рдЕрдВрддрд░ рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдерд╛ред рдореИрдВрдиреЗ <% рд╡рд┐рд╖рдп%> en <% body%> рджреЗрдЦрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдВрджрд░реНрдн рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛ рд╣реИ (TL, DR рдореЗрд░реА рдУрд░ рд╕реЗ рд╢рд╛рдпрдж) рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИ рдЬреЛ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣реЛрддрд╛ рд╣реИред

рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдБ рдХрд┐ рдПрдХ "рд╕рд╛рдорд╛рдиреНрдп" рдЕрднреНрдпрд╛рд╕ рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

  • рдПрдХ рдЕрд▓рдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рдорд╛рдореВрд▓реА рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди (рдпрд╛рдиреА рдирд╛рдо) рдХрд░реЗрдВ

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдЕрдкрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрд╣реБрдд рдХрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк "рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ" (рдЕрд░реНрдерд╛рдд рд╣реЗрдбрд░ / рдлрд╝реВрдЯрд░ / рдЬреЛ рднреА рднрд╛рдЧ) рдмрдирд╛ рдкрд╛рдПрдВрдЧреЗред рд╕рд╛рде рд╣реА, 300 рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рд╕реАрдорд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреВрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд╛рд╖рд╛рдПрдВ рд╣реЛрдВ (рдпрд╣ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ)ред

  • рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╢рд░реАрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <% body%> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдмрд╕ рдПрдХ "рдорд╛рд╕реНрдЯрд░" рдЯреЗрдореНрдкрд▓реЗрдЯ (рдпрд╛ рдЙрдк рдЯреИрдЧ рдкрд░ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ)

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╕рд╡рд╛рд▓ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ :)

@peterkuiper ,

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХреБрдЫ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВ рдЬреЛ рдХреБрдЫ рднреА рдЦреЛрдЬрддрд╛ рд╣реВрдВ рдЙрд╕рдХрд╛ рдЬрд╡рд╛рдм рджреВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

@thinkings рд░рд╣рд╕реНрдпрдордп рдореИрдВрдиреЗ рд╕рдВрд╕реНрдХрд░рдг 2.0.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛, рдЬреЛ рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

var client = require("sendgrid")("key");

client.send({
  to: "[email protected]",
  from: "[email protected]",
  subject: "subject",
  text:  "hello"
  // Or using the html property:
  // html: "Hello <strong>World!</strong>!"
}, fn);

рдореИрдВ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рд╕рдВрд╕реНрдХрд░рдг 3.x.x рдореЗрдВ рдХреИрд╕рд╛ рд▓рдЧреЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдЙрджрд╛рд╣рд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднреНрд░рд╛рдордХ рд╣реИрдВред

рд╢рд╛рдирджрд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ @IonicaBizau!

рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

@thinkings рд░рд╣рд╕реНрдпрдордп рдорд╣рд╛рди! рдлрд┐рд░ рднреА, рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ 3.x.x рдореЗрдВ рдХреИрд╕рд╛ рд▓рдЧреЗрдЧрд╛ред

рдХреЛрдИ рднреА рдПрдХ-рд╕реЗ-рдПрдХ рдореИрдкрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдЦрд░реЛрдВрдЪ рд╕реЗ рд╡реА 2 рдореЗрд▓ рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╕реЗ рдбрд┐рдХреЙрдп рдХрд░рдиреЗ рдФрд░ рд╡реА 3 рдПрдВрдбрдкреЙрдЗрдВрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЙрд╕ рдиреЗ рдХрд╣рд╛, рдореЗрд▓ рд╣реЗрд▓реНрдкрд░ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкрд╣реБрдВрдЪрдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рдХреЙрд▓ рдЙрддрдирд╛ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐ v2 рдХреЗ рд╕рд╛рде рдерд╛ред рд╣рдо рдЕрднреА рд╡рд╣рд╛рдБ рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдХрдИ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@thinkingsouble рдореИрдВрдиреЗ рд╡рд╣ рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд┐рдВрджреБ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИрдВ:

  1. рдпрд╣ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ ( var рдпрд╛ let рдпрд╛ рд╕рдорд╛рди рдХреАрд╡рд░реНрдб рдХреЗ рдмрд┐рдирд╛ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП) рд╣реИрдВред рдЙрджрд╛: from_email = new helper.Email("[email protected]") рдмрдЬрд╛рдп var from_email = ...
  2. рдПрдХ рдИрдореЗрд▓ рд╕рдВрд╕рд╛рдзрди рдХреЗ рд▓рд┐рдП new helper.Email рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╣реА рдЕрдорд┐рддреНрд░ рд╣реИред рдпрд╣ рд╕рдВрднрд╡рддрдГ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Content , Mail рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЪреАрдЬрд╝
  3. рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ method , path рдФрд░ body рдлрд┐рд░ рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдХрд╛рдлреА рдЕрд╢реБрдн рд╣реИред
  4. рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди err, data, ... рдкреНрд░рд╛рд░реВрдк (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрдЬрд╛рдп) рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, IMHO, _quick start_ рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рд╕реНрддрд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред рдпрд╣ рдЧрд╣рд░реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ _quick start_ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред ЁЯШБ


рдЕрджреНрднреБрдд рд╕реЗрд╡рд╛ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред тЬи

@IonicaBizau ,

рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж!

рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдореЗрд▓ рд╣реЗрд▓реНрдкрд░ рдХреА рдЕрдЧрд▓реА рдпрд╛рддреНрд░рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред

рдЖрдк рд╕рд╣реА рд╣реИрдВ, рдпрд╣ рдкрд╣рд▓рд╛ рд╕рдВрд╕реНрдХрд░рдг рдПрдкреАрдЖрдИ рдкрд░ рдПрдХ рдкрддрд▓рд╛ рдЖрд╡рд░рдг рд╣реИред рдпрд╣ рдпреЛрдЬрдирд╛ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдлреАрдбрдмреИрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рд╣реИ, рдЬреИрд╕реЗ рдЖрдкрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ!

рд╕рдореБрджрд╛рдп рдХреЛ рдЖрдкрдХреЗ рд╕рдорд░реНрдерди рдФрд░ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдЖрдкрдХреЛ рдХреБрдЫ рд╕реНрд╡реИрдЧ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдЕрдкрдиреА рдЯреА-рд╢рд░реНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдореЗрд▓рд┐рдВрдЧ рдкрддреЗ рдХреЗ рд╕рд╛рде [email protected] рдкрд░ рдПрдХ рдИрдореЗрд▓ рднреЗрдЬреЗрдВред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдлрд┐рдЯ рджреЗрдЦрддреЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рдзрдиреНрдпрд╡рд╛рдж!

@IonicaBizau

рдЖрдк рднреА рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

var sg = require('sendgrid').SendGrid('API_KEY');
var request = sg.emptyRequest()

request.body = {
  "content": [
    {
      "type": "text/html",
      "value": "<html><p>Hello, world!</p></html>"
    }
  ],
  "from": {
    "email": "[email protected]",
    "name": "My Name"
  },
  "personalizations": [
    {
      "to": [
        {
          "email": "[email protected]",
          "name": "John Doe"
        }
      ]
    }
  ],
  "template_id": "TEMPLATE_ID",
};

request.method = 'POST'
request.path = '/v3/mail/send'
sg.API(request, function (response) {
  console.log(response.statusCode)
  console.log(response.body)
  console.log(response.headers)
});

рдореИрдВ рд╕рд╣рд╛рдпрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдкрд░ рдЗрд╕ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореЗрд░реА рдХрд╛рдлреА рдорджрдж рдХреАред

https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/mail/mail.js

HTH

@thinkingsouble рд╡рд╛рд╣! рдЬрд░реВрд░ рдХрд░реЗрдВрдЧреЗред рдзрдиреНрдпрд╡рд╛рдж-рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА! ЁЯШБ

@peterkuiper рдореИрдВрдиреЗ рд╡рд╣ рднреА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ text/html рдХреЛ html рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЧрд▓рддреА рдХреА рдФрд░ рд╕рд╛рдордЧреНрд░реА рдЕрдиреБрд▓рдЧреНрдирдХ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреАред рдлрд┐рд░ рдореИрдВрдиреЗ рдЕрднреА рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реЗ, рдпрд╣ рдЕрднреА рднреА рдирд┐рдореНрди-рд╕реНрддрд░ ( request.method = ... , content рд╕рд░рдгреА рдореЗрдВ MIME рдкреНрд░рдХрд╛рд░ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ, response рдХреЙрд▓рдмреИрдХ рдЖрджрд┐ рдореЗрдВ рддрд░реНрдХ) рджрд┐рдЦрддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @peterkuiper!

рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ README рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреА рд╢реИрд▓реА рдХреЛ рдЬреЛрдбрд╝рд╛ :)

@IonicaBizau ,

рд╣рд╛рдВ, рд╡рд╣ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕рд╛рдорд╛рди рдЬрд▓реНрдж рд╣реА рдЫрд┐рдкрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

@thinkingsouble рдпрд╣ рд╕реБрдирдХрд░ рдЦреБрд╢ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЕрдиреБрд░реЛрдз рд╕рд╛рдордЧреНрд░реА рдЬрд▓реНрдж рд╣реА рдЫрд┐рдкреА рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИ glad

@IonicaBizau рдХреЗ рдорд╣рд╛рди рд╕реБрдЭрд╛рд╡реЛрдВ рдХреЗ рдмрд╛рдж, рдПрдХ рдФрд░ рд╕рд┐рдлрд╛рд░рд┐рд╢ "рдирд┐рдЬреАрдХрд░рдг" рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ

var sg = require('sendgrid').SendGrid('API_KEY');
sg.addTo(x);
sg.addBcc(email);
sg.addBcc(email);
sg.addHeader(header);

рдПрд╕рдбреАрдХреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдЗрд╕ рд╕реНрддрд░ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдирд╛ рд╕рд┐рд░реНрдл рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рдЧрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрди рдХреЙрд▓ рдХреЛ рдЪреЗрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛:

var sg = require('sendgrid').SendGrid('API_KEY');
sg.addTo(x)
  .addBcc(email)
  .addBcc(email)
  .addHeader(header)
  .send();

рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдЬрд╛рд░реА рд░рдЦреЗрдВ good

@jamesdixon ,

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

рдЬрдм рддрдХ рд╣рдореЗрдВ рдореЗрд▓ рд╣реЗрд▓реНрдкрд░ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЫреБрдкрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛, рддрдм рддрдХ @adambuczynski рдХрд╛ рдХрдорд╛рд▓ рдХрд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рджреЗрдЦреЗрдВ: https://github.com/sendgrid/sendgrid-nodejs/pull/261ред рдпрд╣ рд╕реАрдзреЗ рдЖрдкрдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдЪрд╛рд░ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдХрджрдо рд╣реИред

@thinkings рд░рд╣рд╕реНрдпрдордп рдЖрдк рдирд┐рдореНрди рд╕реНрддрд░ рдХреЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рд╕рд╛рдорд╛рди рдЬрд▓реНрдж рд╣реА рдЫрд┐рдкрд╛ рджреЗрдВрдЧреЗ, рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ? рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд▓ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдХрд┐ рдкреВрд░реЗ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП sendgrid-rest рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣, рдпрд╣ рд╕рдм рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдЖрдкрдХреЛ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдИрдореЗрд▓ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВред

рдпрд╣ рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд┐рдВрддрд╛рдПрдВ рдереАрдВ рдФрд░ рдЗрд╕ рдкреИрдХреЗрдЬ рдХреЗ рдлрд╝реЛрдХрд╕ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрдХреАрд░реНрдг рдХрд░ рджрд┐рдпрд╛, рдЪреЗрдВрдЬрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреНрд▓реАрдирд░ рдПрдкреАрдЖрдИ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬреИрд╕реЗ

@adambuczynski ,

рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдореВрд░реНрдд рдкрд░рдд рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред рдореЗрд▓ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рд╕рдмреНрдпреВрд╕рд░ рдкреНрд░рдмрдВрдзрди рдФрд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдореЗрд▓ рд╕рд╣рд╛рдпрдХ рдХреЛ рдЪрдордХрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдорд╛рдирдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

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

рдЕрдЧрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ / рдорд╣реАрдиреЛрдВ рдореЗрдВ рд╣рдо рдЖрдЧреЗ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП GitHub рдкрд░ рдпрд╣рд╛рдВ рд░реЛрдбрдореИрдк рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВрдЧреЗред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд╕реНрдд рдХреЗ рдЕрдВрдд рддрдХ рд╣рдо рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рд░реНрд╕ рд╡реЗрдмрд╣реВрдХ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

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

рдЕрдкрдбреЗрдЯ @thinkingsouble рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рдЖрдЧреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╛рдВрддреАрдп рдиреЛрдбрдЬ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

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

@thinkingsouble рдореИрдВ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ рдХрд┐ рдЕрдЧрд░ рдХреБрдЫ рд╣реИ рддреЛ рдореИрдВ рдпрд╣рд╛рдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдмрд╕ рдореБрдЭреЗ рдкрд┐рдВрдЧ рдХрд░реЗрдВред рдЕрдЧрд░ рдореИрдВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЪреАрдЬреЛрдВ рдХреЛ рд╣реИрдХ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред :рдореБрд╕реНрдХреБрд░рд╛рдУ:

@adambuczynski рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рдЦрдмрд░ рд╣реИ! рд╕рд╛рде рд╣реА, рдЖрдкрдХрд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖ рдХреЗ рдХрд░реАрдм рд╣реЛ рд░рд╣рд╛ рд╣реИред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рд╢реБрд░реВ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рдкрд╛рдКрдВрдЧрд╛ред

рдкрд╛рд░рд╕реЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╣рдордиреЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЕрднреА рддрдХ рдЗрд╕реЗ рд░рд┐рдЯрд╛рдпрд░ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдирд╛ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ рдпрд╛ рдирд╣реАрдВред

@IonicaBizau ,

рдзрдиреНрдпрд╡рд╛рдж! рдЖрдкрдХрд╛ рд╕рдорд░реНрдерди рдХрд╛рдлреА рд╕рд░рд╛рд╣рдирд┐рдп рд╣реИ!

рдХреНрдпрд╛ рдореЗрд▓ рд╣реЗрд▓реНрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ?
рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ helper.Mail(from_email, subject, to_email, content) рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП personalization.addTo рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ .. рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ 1 рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рди рдХрд┐ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╕рд░рдгреА (рд╢рд╛рдпрдж рдореИрдВ рдЧрд▓рдд рд╣реВрдВ) рдФрд░ рд╕рд╣рд╛рдпрдХ setTo рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдХреЗ рд╕рд╛рде рдирд┐рдЬреАрдХрд░рдг рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдереЗ let personalization = new helper.Personalization(); рдореИрдВ рдХрд░ рд╕рдХрддрд╛ personalization.tos = [email, email]//email=new helper.Email(email_address, name) рдпрд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ? рдХреНрдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ?

@ рдЕрд▓реНрдмрд░реНрдЯ-рдП-рдирд┐рд░реНрдорд╛рддрд╛ рдореИрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ:

  //Helpers
  const Mail = sendgrid.mail.Mail;
  const Email = sendgrid.mail.Email;
  const Personalization = sendgrid.mail.Personalization;

  //Create new mail object
  let mail = new Mail();

  //Create recipients
  let recipients = new Personalization();
  recipients.addTo(new Email(data.to, data.toname));

  //Set recipients
  mail.addPersonalization(recipients);

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд▓реВрдк рдореЗрдВ recipients.addTo рд▓рд╛рдЗрди рдХреЛ рджреЛрд╣рд░рд╛рдХрд░ рдХрдИ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

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

@ рдЕрд▓реНрдмрд░реНрдЯ-рдирд┐рд░реНрдорд╛рддрд╛,

рд╡рд╣ рд░рдЪрдирд╛рдХрд╛рд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХрд▓ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореВрд▓ рд░реВрдк рд╕реЗ рдпрд╣ рдПрдХ "рд╣реИрд▓реЛ рдИрдореЗрд▓" рдлрд╝рдВрдХреНрд╢рди рд╣реИред

рдХрдИ рдИрдореЗрд▓ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╢рд╛рдпрдж рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рдЬреАрдХрд░рдг рд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕ рдкрде рдХреЛ рд╢реБрд░реВ рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ): https://github.com/sendgrid/sendgrid-nodejs/blob/master/examac/helpers/mail /example.js#L15

рдирд┐рдЬреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдирд╛ рднреА рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: https://sendgrid.com/docs/Classroom/Send/v3_Mail_Send/personalifications.html

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

@adambuczynski ,

рдореЗрдВ рдкрд┐рдЪрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдкреАрдЖрдИ рдПрдкреАрдЖрдИ рдХреБрдЫ рдРрд╕рд╛ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдлрд┐рд░ рд╕реЗ рд╕рдордп рджреЗрдиреЗ рдкрд░ рд╕рдВрднрд╡рдд:

@adambuczynski ,

рдпрд╣ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИ, рдЬрдм рдЖрдк рдЙрд╕ рдкрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдкрд┐рдВрдЧ рдХрд░реЗрдВред рдпрд╛ рдЕрдЧрд░ рд╣рдо рдЖрдкрдХреЗ рд╕рд╛рдордиреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдкрд┐рдВрдЧ рдХрд░реВрдВрдЧрд╛ред

рдореИрдВрдиреЗ @bcootner рджреНрд╡рд╛рд░рд╛ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдиреЛрдб рдкреНрд▓рдЧрдЗрди рдХреЗ рд╕рд╛рде рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЗрд╕рдХрд╛ рдЙрдЪрд┐рдд рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@otmezger ,

рдкрд╛рд▓рди тАЛтАЛрдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрдк рдЗрд╕реЗ рдЖрд░рдИрдПрдбреАрдПрдордИ рд╕реЗ рдЬреБрдбрд╝рд╛ рдкрд╛рдПрдВрдЧреЗред

рдореИрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реЗрд▓реНрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ HTML рдФрд░ рдкрд╛рда рдкреНрд░рд╛рд░реВрдк рджреЛрдиреЛрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдФрд░ рднрд╛рдЧ рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╕рд╣рд╛рдпрдХ load рдкрджреНрдзрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛:

  /**
   * Load an email (both plain text and html)
   */
  load(email, data, req) {

    //Get filenames
    const PARTIAL_HTML = path.resolve('./app/components/' + email + '.html');
    const PARTIAL_TEXT = path.resolve('./app/components/' + email + '.txt');

    //Append some globals
    if (req) {
      Object.assign(data, {
        app: {
          title: req.app.locals.APP_TITLE,
          version: req.app.locals.APP_VERSION,
          url: req.app.locals.APP_BASE_URL,
        },
        date: {
          year: moment().format('YYYY'),
          date: moment().format('DD-MM-YYYY'),
        },
      });
    }

    //Return promise
    return Promise.all([
      Promise.all([
        readFile(TEMPLATE_TEXT, 'utf8'),
        readFile(PARTIAL_TEXT, 'utf8'),
      ]).spread((template, partial) => {
        return template.replace('{{partial}}', partial);
      }),
      Promise.all([
        readFile(TEMPLATE_HTML, 'utf8'),
        readFile(PARTIAL_HTML, 'utf8'),
      ]).spread((template, partial) => {
        return template.replace('{{partial}}', partial);
      }),
    ]).then(result => result.map(contents => replaceData(contents, data)));
  },

рдЗрд╕рдХреЗ рдмрд╛рдж Sendgrid рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдПрдХ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  let email = mailer.load('user/emails/verify-email-address', data, req)
    .spread((text, html) => ({
      to: user.email,
      from: req.app.locals.EMAIL_IDENTITY_NOREPLY,
      subject: 'Verify your email address',
      text, html,
    }));

рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рд╣реИрдВрдбрд▓рдмрд╛рд░реНрд╕ рдХреА рддрд░рд╣ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдкрд░реНрдпреБрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ replaceData рд╕рд╣рд╛рдпрдХ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╣реИрдВрдбрд▓рдмрд╛рд░ рдЬреИрд╕реЗ рдЯреИрдЧ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди "рдореЗрд▓ рд╣реЗрд▓реНрдкрд░" рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдХреЗ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рдордп рдХреА рдПрдХ рдЕрд╕реАрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдмрдЪрд╛рдпрд╛ред рдпрд╣ рдЗрддрдирд╛ рдирд┐рд░рд╛рд╢ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ 2.0 рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рд╣реЛ рдЧрдпрд╛ред рдореИрдВ рд╡реИрдз V3 JSON рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдХрд╛рд░рдЦрд╛рдиреЗ-рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдЕрдм V3 рдПрдкреАрдЖрдИ рдореЗрдВ рд╕реБрдзрд╛рд░ рдкрд░ рдмрд╣реБрдд рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВ (рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдм рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ)ред

рдпрд╣ рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдкрд╣рд▓реЗ рднреА рдЬреВрдЭрддрд╛ рдерд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ
рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЛ рд╕рдВрднрд╡рддрдГ рдЕрдзрд┐рдХ рдХреБрд╢рд▓, рдФрд░ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рддрд░реНрдХ рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рд╢рд╛рдпрдж рдЙрдиреНрд╣реЗрдВ рдореБрдЦреНрдп рдкреНрд░реЗрд╖рдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП,
рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдПред

рдореИрдВ рдЙрди рдкрд░ рдПрдХ рдФрд░ рдирдЬрд░ рдбрд╛рд▓реВрдВрдЧрд╛ рдФрд░ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рдареЛрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ
рд╕реБрдЭрд╛рд╡ред

рд╢реБрдХреНрд░ рдкрд░, 26 рдЕрдЧрд╕реНрдд 2016, 05:48 рд╢реЙрди рд▓рд┐рдВрдбреЛ рд╕реВрдЪрдирд╛рдПрдВ @github.com рдиреЗ рд▓рд┐рдЦрд╛:

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рджреНрд╡рд╛рд░рд╛ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди "рдореЗрд▓ рд╕рд╣рд╛рдпрдХ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдХреЗ
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рдордп рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдмрдЪрд╛рдпрд╛ред рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реИ
рдирд┐рд░рд╛рд╢ рдореИрдВ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ 2.0 рд╕реЗ рдиреАрдЪреЗ рдЪрд▓рд╛ рдЧрдпрд╛ред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/sendgrid/sendgrid-nodejs/issues/252#issuecomment -242479491
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAd8Qu5iRLFQwoKlRd2fP5oioT1uLqB6ks5qjdV2gaJpZM4AAiac
ред

@ рд╢реАрдирд▓рд┐рдВрдбреЛ ,

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

рдореЗрд▓ рд╣реЗрд▓реНрдкрд░ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: https://github.com/sendgrid/sendgrid-nodejs#without -mail-helper-class

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

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

@adambuczynski ,

рдореИрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рдЖрдкрдХрд╛ рдЙрддреНрд╕рд╛рд╣ рдЬрд╛рд░реА рд╣реИ :)

рдореИрдВ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛!

@ рдЬреВрд▓реНрд╕рдмреМ ,

рд╣рдордиреЗ рдПрдХ USE_CASES.md рдлрд╝рд╛рдЗрд▓ рд╢реБрд░реВ рдХреА рд╣реИ рдЬрд╣рд╛рдВ рд╣рдо рдЖрдо рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░реЗрдВрдЧреЗред рдкрд╣рд▓рд╛ рд▓реЗрдирджреЗрди рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдерд╛ :)

рдореИрдВ рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛!

ЁЯС╗

@ рдирд┐рд╢реНрдЪрдпрдмреБрджреНрдзрд┐ ! рдореБрдЭреЗ рдПрдХ рдпрд╛ рджреЛ рджрд┐рди рджреАрдЬрд┐рдП рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░реВрдБрдЧрд╛ред

рдпрд╣ рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рдзрд╛рдЧреЗ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ :)

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдЧрд▓реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИ, рдЬреЛ рд╕рдВрднрд╡рддрдГ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рддреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкрд▓ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдк рд╣рдорд╛рд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ? https://github.com/sendgrid/sendgrid-nodejs/issues/290

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

@thinkingsouble рдореБрдЭреЗ рдЖрдЦрд┐рд░ рд╕рдордЭ рдореЗрдВ рдЖ рдЧрдпрд╛ рдХрд┐ v3 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд╕рднреА Sendgrid рд╣реЗрд▓реНрдкрд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдХреНрдпрд╛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ ... рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдИрдореЗрд▓ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ: P

рдореИрдВ Sendgrid рдХреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдУрд╡рд░рд╣рд╛рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡рд░рдг рднреЗрдЬрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, sendgrid-mailer ред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:

https://github.com/sendgrid/sendgrid-nodejs#with -mail-helper-class

рдпрд╣ рд╕рд┐рд░реНрдл "рдореИрдВ рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ" рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 8 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рдХреА 15 рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

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

рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдкреАрдЖрдИ рд╣реЗрд▓реНрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓, рдЖрд╕рд╛рди рдХреЗ рдкреАрдЫреЗ рд╕рднреА рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧреЛрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛, рддрд╛рдХрд┐ Sendgrid рдХреЗ рд╕рд╛рде рдИрдореЗрд▓ рднреЗрдЬрдирд╛ рдЖрд╕рд╛рди рдФрд░ рдордЬрд╝реЗрджрд╛рд░ рд╣реЛ рдЬрд╛рдП :)

рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЙрджрд╛рд╣рд░рдг рдмрди рдЬрд╛рддрд╛ рд╣реИ:

//Load mailer and set API key (only needed once)
const mailer = require('sendgrid-mailer').config(API_KEY);

//Create email data 
const email = {
  to: '[email protected]',
  from: 'Someone <[email protected]>',
  subject: 'Hello world',
  text: 'Hello plain world!',
  html: '<p>Hello HTML world!</p>',
};

//Send away 
mailer.send(email); //Returns promise 

рдЕрдиреБрд░реЛрдз рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ Sendgrid рдХреЗ рд╕рд╣рд╛рдпрдХреЛрдВ рдХрд╛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдХрдИ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдЧреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ Sendgrid рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА Sendgrid Mail рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ / рд╕реЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП / рдЬреИрд╕реЗ Name <[email protected]> рд▓рд┐рдП рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╛рд░реВрдк рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдирд╛рдо рдпрд╛ рдИрдореЗрд▓ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде README рджреЗрдЦреЗрдВред

рд╡рд╣рд╛рдБ рд╢рд╛рдпрдж рдЕрднреА рднреА рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдпрд╣рд╛рдБ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрд┐рд╕рд╕реЗ рд▓реЛрдЧ Sendgrid API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд╡рд╣ рдЗрд╕рд╕реЗ рдЕрднрд┐рднреВрдд рд╣реБрдП рдмрд┐рдирд╛ рдирд╣реАрдВ рдерд╛ред

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЖрддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд╢рд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╕рд░рд▓ рдПрдкреАрдЖрдИ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ :)

cc @julesbou рдереЛрдбрд╝реА рджреЗрд░ рд╕реЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

@adamreisnz рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдзрдиреНрдпрд╡рд╛рджред

рдореЗрд░рд╛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдЬреЙрдм рдЬреЛ рд╕реЗрдВрдбрдЧреНрд░рд┐рдб рдХреЗ рдЬрд░рд┐рдП рдИрдореЗрд▓ рднреЗрдЬрддрд╛ рд╣реИ, v4.0.7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдерд╛ред рдореИрдВрдиреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдпрд╛ рдФрд░ рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ред рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢ рдерд╛ рдХрд┐ рдИрдореЗрд▓ рднреЗрдЬрдирд╛ рдХрд┐рддрдирд╛ рдЬрдЯрд┐рд▓ рдерд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЬрд╣рдордд рдирд╣реАрдВ рдЙрдард╛рдИред

рдЙрд╕ рд╕рдм рдиреЗ рдХрд╣рд╛, рдЗрд╕ рдмрд╛рдд рдХреА рд╕рд░рд▓рддрд╛ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВ рдЦреЛрдЬ рд░рд╣рд╛ рдерд╛ред рдореИрдВ рдЗрд╕реЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рдПрдХ рд╢реЙрдЯ рджреВрдБрдЧрд╛ред

рдЪрд┐рдпрд░реНрд╕!

@jamesdixon рдореИрдВ рдЕрднреА рднреА v3.xx рдкрд░ рдЕрдЯрдХрд╛ рд╣реБрдЖ рдерд╛ рдФрд░ рдЕрдкрдЧреНрд░реЗрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ :)

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЙрдкрдпреЛрдЧреА рдкрд╛рдПрдВрдЧреЗред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд░ рдХреБрдЫ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧрд╛рдпрдм рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж!

@adamreisnz ,

рдпрд╣ рд╣рдорд╛рд░реЗ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрдпрд╛рдирдХ рдФрд░ рдзрдиреНрдпрд╡рд╛рдж рд╣реИ :)

tldr; рд╣рдорд╛рд░реЗ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВ рдФрд░ рдЖрдк рдкрд╣рд▓реЗ рд╣реА рд╣рдореЗрдВ рд╣рд░рд╛ рдЪреБрдХреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рд╣рдо рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ :)

рд╣рдо рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реИрдВ рдФрд░ рдпрд╣ v3 рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЕрдкрдбреЗрдЯ рдХрд╛ рдЪрд░рдг рд╣реИ рдЬреЛ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА 7 рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреГрдкрдпрд╛ Node.js рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдореЗрд▓ рд╣реЗрд▓реНрдкрд░ рд╕рдВрд╡рд░реНрдзрди рдкрд░рд┐рдпреЛрдЬрдирд╛ рджреЗрдЦреЗрдВред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рд╣рдо C # рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреВрд░рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХреНрдпрд╛ рд╣рдо рдЗрд╕ Node.js рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛ рдХрд╛ рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреГрдкрдпрд╛ рджреЗрдЦреЗрдВ рдЗрд╕ ред рд╣рдо рдЙрдореНрдореАрдж рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╣реА рджрд┐рди рдореЗрдВ рд░рд┐рд▓реАрдЬ рд╣реЛрдЧреАред

рддреЛ, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ:

рдХреНрдпрд╛ рдЖрдк рдпрд╣рд╛рдБ рдореЗрд▓ рд╣реЗрд▓реНрдкрд░ рдореЗрдВ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ (рдЬреИрд╕рд╛ рд╣рдордиреЗ C # рдореЗрдВ рдХрд┐рдпрд╛ рд╣реИ)? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХрд╛рдо рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдкрд╣реБрдВрдЪ рд╣рд╛рд╕рд┐рд▓ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред рдЪреВрдВрдХрд┐ рдЖрдкрдиреЗ рдПрдордЖрдИрдЯреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреЛрд╕реНрдЯ рдХреА рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рдЕрдкрдиреЗ рдЕрдЪреНрдЫреЗ рдХрд╛рдо рд╕реЗ рдереЛрдбрд╝рд╛ рдЙрдзрд╛рд░ рд▓реЗрддреЗ рд╣реИрдВ рддреЛ рдЖрдк рд╣рдореЗрдВ рдорд╛рдл рдХрд░ рджреЗрдВрдЧреЗ;) рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╢реНрд░реЗрдп рдорд┐рд▓реЗред

рдЖрдк рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдЕрд▓рдЧ рд░рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдПрдХ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреГрдкрдпрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╣рд╛рдВ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдзрд╛рд░рд╛ рдХреЗ рддрд╣рдд?

рдЖрдкрдХреЗ рдЕрджреНрднреБрдд рдирд┐рд░рдВрддрд░ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЖрдкрдиреЗ рдзрдорд╛рд▓ рдордЪрд╛рдпрд╛!

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

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

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЗрд╕ рд╕рдордп рдореЗрдВ рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реИрдкрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд░реИрдкрд░ рд╕реЗ рдХреБрдЫ рдХреЛрдб рдЙрдзрд╛рд░ рд▓реЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рд░ рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдПрдВ :) рдореИрдВ рдЙрд╕ рдкреЗрдЬ рдореЗрдВ рдЕрдкрдиреЗ рд░реИрдкрд░ рд╕реЗ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реВрдВрдЧрд╛ time

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

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

@thinkingserious рдХрд┐ рдкрд░ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░ рдХреНрдпрд╛ рд╣реИрдВ?

@adamreisnz ,

рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдореБрджрд╛рдп рдХреЗ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧ рдЗрд╕рдореЗрдВ рд╡рдЬрди рдХрд░реЗрдВрдЧреЗред

рдореИрдВ рдЗрд╕ рдкрд░ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╕реЛрдЪреВрдВрдЧрд╛ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рдореЗрд▓ рд╣реЗрд▓реНрдкрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖрдиреЗ рдкрд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░реВрдВрдЧрд╛ред

рдЖрдкрдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд▓рд┐рдП рдФрд░ рд╣рдорд╛рд░реЗ рдбреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдзрдиреНрдпрд╡рд╛рдж!

рдпрд╣ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИред рдЖрдк рдореБрдЦреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЕрдВрджрд░ рдЖрд╕рд╛рди рдореЗрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рдпрдХ / рд░реИрдкрд░ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рджреЛрдиреЛрдВ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрд╡рд░реЛрдз рдпрд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рдорд┐рд╢реНрд░рдг рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдЦрдиреЗ рд╕реЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреА (рдпрд╛ рджреЛрдиреЛрдВ) рдЬрд╝рд░реВрд░рдд рд╡рд╛рд▓реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдЪреБрдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реЗрдЧреА, рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реАрдорд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рджреЛрдиреЛрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдиреЛрдб рдФрд░ рдПрдирдкреАрдПрдо рдореЙрдбреНрдпреВрд▓ рдХреА рдкреНрд░рдХреГрддрд┐ рд╣реИ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреИрдХреЗрдЬ рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рд╣реИ (рдФрд░ рдЗрд╕рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реЛ!)ред рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдиреЛрдб рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХреА рдереА рддреЛ рдпрд╣ рдХреБрдЫ рдРрд╕рд╛ рдерд╛ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рдЖрджрдд рдереА, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд┐рдпрд╛, рддреЛ рдореБрдЭреЗ рд╕реНрд╡рдЪреНрдЫ, рд╕рд░рд▓ рдкреИрдХреЗрдЬ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдФрд░ рдХреНрд╖рдорддрд╛ рдкрд╕рдВрдж рдЖрдИред

рд╕рдореБрджрд╛рдп рд╕реЗ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд░рд╣реЗрдВред

рдареАрдХ рд╣реИ, рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдареЛрд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдкреНрд░реЗрд░рдХ рд╣реИрдВ :)

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреЛ рд╕рдордп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред

рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рдерд╛ рдФрд░ рдЕрдм рдЖрдк рдореБрдЭреЗ рдЗрд╕ рдПрд╕рдбреАрдХреЗ рдкрд░ рдЖрдкрдХреЗ рдФрд░ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдорд╣рд╛рди, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ :)
рдореИрдВ 4 рд╣рдлреНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЫреБрдЯреНрдЯреА рддрд╛рдХрд┐ рд╕рд╛рдзрди рдореИрдВ рдЕрдВрдд рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЦрд╛рд▓реА рд╕рдордп рд╣реЛрдЧрд╛ рдкрд░ рд╣реВрдБ ЁЯМ┤

@adamreisnz ,

рдореБрдмрд╛рд░рдХ рд╣реЛ!

рдПрдХ рдЙрдЪреНрдЪ рд╕реНрддрд░ "рдореЗрд▓рд░ рдкреИрдХреЗрдЬ" рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдо рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдмрд╕ рдХреБрдЫ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред

рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдпрд╣ рдореГрдд рд╕рд░рд▓ рдерд╛, рдФрд░ рдЕрдм рдпрд╣ рдПрдХ рдЕрдкрд╡рд┐рддреНрд░ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред "рдмреЗрд╕рд┐рдХ" рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 8 рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВ , рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рд╢рд╛рд▓ рдХрджрдо рдкреАрдЫреЗред

рдЬрд┐рддрдирд╛ рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

sendgrid.send({
  from: fromEmail,
  fromName: fromName,
  to: toEmail,
  subject: 'Hello'
  ...
})
.then(...)
.catch(...)
.finally(...)

рд╢реВрдиреНрдп рдбреЙрдХреНрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдмрд╕ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣рдо рдкреЗрд╕реНрдЯ рдФрд░ рд╣рдорд╛рд░реЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдорд╛рд░реА рдЯреАрдо рдХреЗ рд▓рд┐рдП SendGrid рдХрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдореВрд▓реНрдп рд╣реИ, рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдЕрдм рдЧрд╛рдпрдм рд╣реИред

@eeosk рдХреА рдирдЬрд╝рд░ https://github.com/sendgrid/sendgrid-nodejs/issues/252#issuecomment -265934147 a рдкрд░ рд╣реИ

@adamreisnz рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ; рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдбрд┐рдЬрд╛рдЗрди рдирд┐рд░реНрдгрдпред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк SendGrid рдкреЗрд░реЛрд▓ рдкрд░ рд╣реИрдВ!

@thinkingsouble рдХреГрдкрдпрд╛ рдореБрдЦреНрдп рдбреЙрдХреНрд╕ рдХреЛ @adamreisnz рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдкрд░ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдореИрдВ рдЖрдЬ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдирддрд╛ рдерд╛, рддреЛ рдпрд╣ рдореБрдЭреЗ рдШрдВрдЯреЛрдВ рд╕рд┐рд░рджрд░реНрдж рд╕реЗ рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рдерд╛ рдХрд┐ рдХреМрди-рд╕рд╛ рдЖрдЗрдиреНрдбреЛ рдПрдХ рдЕрддрд┐рд░рдВрдЬрд┐рдд рд╣реИ, рдЬрд╛рд╡рд╛- рдЬреЗрдПрд╕ рдореЗрдВ рдкреНрд░реЗрд░рд┐рдд рдПрдкреАред рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡реЗ рджреЗрдВ рдЬреЛ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рди рдХрд┐ рдЖрдк рдЬреЛ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВ :-)

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмрд╕ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЕрдиреНрдп рджреЗрд╡рддрд╛ рдпрд╣рд╛рдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм V2 рдПрдкреАрдЖрдИ рд╕реВрд░реНрдпрд╛рд╕реНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдирдП рдЦрд╛рддреЛрдВ рдХреЛ рд╡реА 3 рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВрдиреЗ рдЬреЛ рдкрд╣рд▓реА рдХреЛрд╢рд┐рд╢ рдХреА рдереА рд╡рд╣ рдиреЛрдбрдореИрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ (рдЬрд┐рд╕рдХрд╛ рдкреНрд░реЗрд╖рд┐рдд рдкрд░рд┐рд╡рд╣рди рдЕрднреА рднреА w / v2 рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдЬреЛ рдХрд┐ рдЕрддреАрдд рдореЗрдВ рджрд░реНрдЬрдиреЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд▓реЗ рд▓рд┐рдпрд╛ред рдЕрдЧрд░ рдореБрдЭреЗ рдиреЛрдб рд╕рдореБрджрд╛рдп рдореЗрдВ рдиреЛрдбреЗрдореИрд▓рд░ рдХреА рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдирд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдХреЗрд╡рд▓ рд╡рд╣реА рдирд╣реАрдВ рд░рд╣реВрдВрдЧрд╛ рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╣реАрдиреЛрдВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП @ fisch0920 рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ Sendgrid API рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ @thinkings рд░рд╣рд╕реНрдпрдордп рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд╛рдо рдХрд░реВрдВрдЧрд╛ред рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдРрд╕реА рдЪреАрдЬрд╝ рд▓реЗрдХрд░ рдЖрдПрдВрдЧреЗ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЬрд╝рд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рд╣реИред

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░,

рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдЖрдк SendGrid Node.js рдореЗрд▓ рд╣реЗрд▓реНрдкрд░ рдкрд░ рдлрд┐рд░ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/sendgrid/sendgrid-nodejs/pull/378

рдЖрдкрдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреА!

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

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

рдХреГрдкрдпрд╛ рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП # 378 рдкрд░ рдЬрд╛рдПрдБ, рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

Loriot-n picture Loriot-n  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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