Sendgrid-nodejs: рдХрдИ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдИрдореЗрд▓ рднреЗрдЬреЗрдВ рддрд╛рдХрд┐ рд╣рд░ рдХреЛрдИ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдИрдореЗрд▓ рдХреЛ рд╣реА рд╣реЗрдбрд░ рдореЗрдВ рджреЗрдЦреЗ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЬрдире░ 2017  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sendgrid/sendgrid-nodejs

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

рдореИрдВ рд╡реЗрдм API v3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореЗрд▓ рдХреИрд╕реЗ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реВрдВ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ TO рдмреЙрдХреНрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдкрдирд╛ рдкрддрд╛ рджреЗрдЦрддрд╛ рд╣реИ? рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдореИрдВ рдиреЛрдбреНрдЬ, рд╡реЗрдм рдПрдкреАрдЖрдИ рд╡реА 3 рдФрд░ рдкреНрд░реЗрд╖рдХ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЗрд▓ рднреЗрдЬ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ TO рдмреЙрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИред рдпрд╣рд╛рдБ рдЕрдиреБрд░реЛрдз рд╣реИ:

var request = sg.emptyRequest({
        method: 'POST',
        path: '/v3/mail/send',
        body: {
            personalizations: [
                {
                    to: recepientEmails,
                    substitutions: emailTemplate.substitutions
                }
            ],
            from: {
                email: '[email protected]',
                name: 'Dorotea from AWW'
            },
            template_id: emailTemplate.template_id,
            categories: emailTemplate.categories
        }
    });

рдореИрдВрдиреЗ рдкрдврд╝рд╛ рд╣реИ рдХрд┐ Web API v2 рдХреЗ рд╕рд╛рде рдореБрдЭреЗ x-smtp рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рдИрдореЗрд▓ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдпрд╣рд╛рдБ рднреЗрдЬрд╛ рдЬрд╛рдПред
https://sendgrid.com/docs/API_Reference/Web_API/mail.html

рдФрд░ рдореИрдВрдиреЗ рдкрдврд╝рд╛ рд╣реИ рдХрд┐ SMTP рдХреЗ рд╕рд╛рде Web API v2 рд╕реЗ рд╕рдм рдХреБрдЫ рдпрд╣рд╛рдБ рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Web API v3 рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
https://sendgrid.com/docs/Classroom/Send/v3_Mail_Send/how_to_migrate_from_v2_to_v3_mail_send.html

рд░реИрдк рдЕрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдПрдкреАрдЖрдИ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡реЗрдм рдПрдкреАрдЖрдИ v3 рдХреЗ рд╕рд╛рде рдХрдИ рдкрддреЗ рдкрд░ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рд╣рд░ рдИрдореЗрд▓ рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдИрдореЗрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рд╣реИрдбрд░ рдореЗрдВред

рд╕рдм рдЕрдЪреНрдЫрд╛,
рдЬрд╝реНрд╡реЛрдирд┐рдорд┐рд░

help wanted question

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

рд╣рд╛рдп @ zvone187 ,

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡реИрдпрдХреНрддрд┐рдХрд░рдг рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

// This assumes every recipient gets the same substitutions. If not, just add the right substitution for each email
const personalizations = recipientEmails.map(email => ({
    to: [{ email }],
    substitutions: emailTemplate.substitutions
}));
const request = sg.emptyRequest({
    method: 'POST',
    path: '/v3/mail/send',
    body: {
        personalizations,
        from: {
            email: '[email protected]',
            name: 'Dorotea from AWW'
        },
        template_id: emailTemplate.template_id,
        categories: emailTemplate.categories
    }
});

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

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

рд╣рд╛рдп @ zvone187 ,

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡реИрдпрдХреНрддрд┐рдХрд░рдг рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

// This assumes every recipient gets the same substitutions. If not, just add the right substitution for each email
const personalizations = recipientEmails.map(email => ({
    to: [{ email }],
    substitutions: emailTemplate.substitutions
}));
const request = sg.emptyRequest({
    method: 'POST',
    path: '/v3/mail/send',
    body: {
        personalizations,
        from: {
            email: '[email protected]',
            name: 'Dorotea from AWW'
        },
        template_id: emailTemplate.template_id,
        categories: emailTemplate.categories
    }
});

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

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

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрд▓рдЧреНрдирдХ рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ?
рдореБрдЭреЗ рдПрдХ рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдХрдИ рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрдХреНрддрд┐рддреНрд╡ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрд▓рдЧреНрдирдХ рдлрд╝рд╛рдЗрд▓ред

@ рдбрд╛рдпрдорд┐рдерд┐рдм ,

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

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

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

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

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

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

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

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

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

alberto-fp-24 picture alberto-fp-24  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ