рдирдорд╕реНрдХрд╛рд░,
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд░реАрдбрдореА рдкрд░ рдПрдХ рдЖрд╕рд╛рди рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди рд╣реЛрдЧрд╛, рдХреБрдЫ рд╕рд░рд▓ рдХреЗ рд░реВрдк рдореЗрдВ https://sendgrid.com/blog/migrating-app-sendgrids-template-engine/ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ tbh рдЕрдЧрд░ 30 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ Sendgrid рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдкрдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдПрдХ рдЕрдиреБрднрд╡реА рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИред
рдЪреАрдпрд░реНрд╕,
рдФрд░ рдЗрд╕ рдЧреБрд╕реНрд╕реЗ рдореЗрдВ рд╢реЗрдЦрд╝реА рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ
ps: рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рд╣реИ, рдЬреИрд╕рд╛ рдореИрдВ https://sendgrid.com/docs/Integrate/Code_Examples/v2_Mail/nodejs.html , рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реВрдВ
рдирдорд╕реНрдХрд╛рд░ @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 , рдореИрдВрдиреЗ рдЕрднреА рднреА рдПрдХ рд╣реА рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╕рд┐рд░ рдХреЛ рдЦрд░реЛрдВрдЪ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдпрд╣ рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рд╛рдорд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рд╣реИ:
_рдкрд░рдо_
{
":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 рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рд╕реАрдорд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреВрд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕реА рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд╛рд╖рд╛рдПрдВ рд╣реЛрдВ (рдпрд╣ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ)ред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╕рд╡рд╛рд▓ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ :)
@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 рдореИрдВрдиреЗ рд╡рд╣ рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд┐рдВрджреБ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИрдВ:
var
рдпрд╛ let
рдпрд╛ рд╕рдорд╛рди рдХреАрд╡рд░реНрдб рдХреЗ рдмрд┐рдирд╛ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЧрдП) рд╣реИрдВред рдЙрджрд╛: from_email = new helper.Email("[email protected]")
рдмрдЬрд╛рдп var from_email = ...
new helper.Email
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╣реА рдЕрдорд┐рддреНрд░ рд╣реИред рдпрд╣ рд╕рдВрднрд╡рддрдГ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред Content
, Mail
рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЪреАрдЬрд╝method
, path
рдФрд░ body
рдлрд┐рд░ рд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рдХрд╛рдлреА рдЕрд╢реБрдн рд╣реИред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 рдкрд░ рдЬрд╛рдПрдБ, рдзрдиреНрдпрд╡рд╛рдж!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@thinkingsouble рдореБрдЭреЗ рдЖрдЦрд┐рд░ рд╕рдордЭ рдореЗрдВ рдЖ рдЧрдпрд╛ рдХрд┐ v3 рдореЗрдВ рдкреЗрд╢ рдХрд┐рдП рдЧрдП рд╕рднреА Sendgrid рд╣реЗрд▓реНрдкрд░ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдХреНрдпрд╛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ ... рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ рдФрд░ рд╡реЗ рдИрдореЗрд▓ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ: P
рдореИрдВ Sendgrid рдХреЗ рд╕рднреА рдХреЛрдб рдХреЛ рдУрд╡рд░рд╣рд╛рд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡рд░рдг рднреЗрдЬрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, sendgrid-mailer ред
рд╣рд╛рд▓рд╛рдВрдХрд┐ Sendgrid рдХреА рд╕рд╣рд╛рдпрдХ рдХрдХреНрд╖рд╛рдПрдВ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рдИрдореЗрд▓ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдФрд░ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдиреЛрдб рдРрдкреНрд╕ рдХреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕рд╣рд╛рдпрдХреЛрдВ рдХрд╛ рдирд╛рдордХрд░рдг рдХрд╛рдлреА рднреНрд░рд╛рдордХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ
Mail
vsEmail
редрдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
https://github.com/sendgrid/sendgrid-nodejs#with -mail-helper-class
рдпрд╣ рд╕рд┐рд░реНрдл "рдореИрдВ рдПрдХ рдИрдореЗрд▓ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ" рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рддрд░реАрдХрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 8 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдХреЛрдб рдХреА 15 рд▓рд╛рдЗрдиреЗрдВ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдирд╛ рдпрдХреАрдирди рдФрд░ рднреА рдмреБрд░рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рддрдм рдЖрдкрдХреЛ рдИрдореЗрд▓ JSON рдЕрдиреБрд░реЛрдз рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдЧрд▓рддреА рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рддреЛрдбрд╝ рджреЗрдЧреАред
рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдкреАрдЖрдИ рд╣реЗрд▓реНрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓, рдЖрд╕рд╛рди рдХреЗ рдкреАрдЫреЗ рд╕рднреА рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧреЛрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ рдХрд░ рджрд┐рдпрд╛, рддрд╛рдХрд┐ Sendgrid рдХреЗ рд╕рд╛рде рдИрдореЗрд▓ рднреЗрдЬрдирд╛ рдЖрд╕рд╛рди рдФрд░ рдордЬрд╝реЗрджрд╛рд░ рд╣реЛ рдЬрд╛рдП :)
рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдЙрджрд╛рд╣рд░рдг рдмрди рдЬрд╛рддрд╛ рд╣реИ:
рдЕрдиреБрд░реЛрдз рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ Sendgrid рдХреЗ рд╕рд╣рд╛рдпрдХреЛрдВ рдХрд╛ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдХрдИ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдЧреЗ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ Sendgrid рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА Sendgrid
Mail
рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ / рд╕реЗ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рд▓рд┐рдП / рдЬреИрд╕реЗName <[email protected]>
рд▓рд┐рдП рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рд╛рд░реВрдк рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдирд╛рдо рдпрд╛ рдИрдореЗрд▓ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде README рджреЗрдЦреЗрдВредрд╡рд╣рд╛рдБ рд╢рд╛рдпрдж рдЕрднреА рднреА рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рдпрд╣рд╛рдБ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрд┐рд╕рд╕реЗ рд▓реЛрдЧ Sendgrid API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рд╡рд╣ рдЗрд╕рд╕реЗ рдЕрднрд┐рднреВрдд рд╣реБрдП рдмрд┐рдирд╛ рдирд╣реАрдВ рдерд╛ред
рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдЖрддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдпрд╣ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд╢рд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд╕рд░рд▓ рдПрдкреАрдЖрдИ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдореЗрдВ :)
cc @julesbou рдереЛрдбрд╝реА рджреЗрд░ рд╕реЗ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрднреА рднреА рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред