Sendgrid-nodejs: рдореЗрд▓ рднреЗрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде

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

рд╕рд╛рд░рд╛рдВрд╢ рдЬрд╛рд░реА рдХрд░реЛ

* рдпрд╣рд╛рдВ рдореЗрд░рд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ *
PROOF: https://support.sendgrid.com/hc/en-us/requests/1325416?page=1

рдореИрдВ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВред рд╕рдорд░реНрдерди рдореБрдЭреЗ рдпрд╣рд╛рдБ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ред рдореИрдВ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдЪрд▓ рд░рд╣реЗ рдиреЛрдб.рдЬреЗрдПрд╕ рд╕реЗ рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ npm рдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдЙрджрд╛рд╣рд░рдг рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде 401 рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдЬреЛ x-no-cors reason ред рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп @sendgrid/mail рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╣реА рдореБрдЭреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА рдЬреЛ рдпрд╣ рдХрд╣рддреА рд╣реИ:

TypeError: Cannot read property 'errors' of undefined
at ResponseError.toString (E:\songsplits\api\node_modules\@sendgrid\helpers\classes\response-error.js:45:27)
at Function.CapturedTrace.parseStackAndMessage (E:\songsplits\api\node_modules\bluebird\js\main\captured_trace.js:176:25)
at CapturedTrace.attachExtraTrace (E:\songsplits\api\node_modules\bluebird\js\main\captured_trace.js:79:32)
at Promise._attachExtraTrace (E:\songsplits\api\node_modules\bluebird\js\main\debuggability.js:102:19)
at Promise._rejectCallback (E:\songsplits\api\node_modules\bluebird\js\main\promise.js:471:10)
at E:\songsplits\api\node_modules\bluebird\js\main\promise.js:486:17
at Request.http [as _callback] (E:\songsplits\api\node_modules\@sendgrid\client\src\client.js:124:18)
at Request.self.callback (E:\songsplits\api\node_modules\request\request.js:188:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (E:\songsplits\api\node_modules\request\request.js:1171:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (E:\songsplits\api\node_modules\request\request.js:1091:12)
at IncomingMessage.g (events.js:291:16)
at emitNone (events.js:91:20)

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдпрд╣рд╛рдБ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреНрдпреВрдирддрдо рдореЙрдбреНрдпреВрд▓ рд╣реИ

email.js


const sgMail = require('@sendgrid/mail')

sgMail.setApiKey(process.env.SENDGRID_KEY);

module.exports.send = function send(html,subject,to,from){

    return new Promise((resolve,reject)=>{

        sgMail.send({
            to,
            from,
            subject,
            html
        }).then(resolve).catch(reject);

    });
};

index.js

const send = require('./mail');

send(
    '<!DOCTYPE html><html><head><title>Hi</title></head><body>Hi</body></html>',
    'Hi',
    '[email protected]',
    '[email protected]',
).then(()=>console.log('sent an email successfully!')).catch(err=>console.log(err));

рддрдХрдиреАрдХреА рдЬрд╛рдирдХрд╛рд░реА:

  • sendgrid-nodejs рд╕рдВрд╕реНрдХрд░рдг: рдорд╛рд╕реНрдЯрд░ (рдирд╡реАрдирддрдо рдкреНрд░рддрд┐рдмрджреНрдз: [рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдВрдЦреНрдпрд╛])
  • Node.js рд╕рдВрд╕реНрдХрд░рдг: 6
help wanted question

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

рдмрд╕ рдПрдХ рдФрд░ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдХреЛрдИ рдмрд┐рдиреЛ рдирд╣реАрдВред рдХрднреА-рдХрднреА, рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рд╣реИ

Unauthorized (401)
Permission denied, wrong credentials

рд╣рд╛рдп @ r3wt ,

рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдЯреАрдо рдорджрдж рдХрд░ рд╕рдХрддреА рд╣реИред рд╡реЗ рдЖрдкрдХреА рдХреБрдВрдЬреА (рдЕрдВрдХ) рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

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

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

@thinkingsouble рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдЯреАрдо рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдпрд╣рд╛рдВ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИред

@ r3wt

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреЛ рдЬреАрдердм рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реА рдЕрдиреБрдкрд╛рд▓рди рдЯреАрдо рдЖрдкрдХреА рдХреБрдВрдЬреА рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрдЧреАред

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

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдПрдХ рдПрд╣рд╕рд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдореЗрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдирдИ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ / рдирд┐рдЬреАрдХреГрдд рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рдЕрдкрдирд╛ рд╕рдорд░реНрдерди рдЯрд┐рдХрдЯ рдирдВрдмрд░ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ?
рдзрдиреНрдпрд╡рд╛рдж!!

рдЕрднреА рдЯрд┐рдХрдЯ рджреЗрдЦрддрд╛ рд╣реВрдВ ... рддреЛ рд╡рд╣рд╛рдВ рднреА рджреЗрдЦреВрдВрдЧрд╛ред рдзрдиреНрдпрд╡рд╛рдж!

@mbernier рдХреБрдВрдЬреА рдПрдХ рдирд┐рдЬреА рд░реЗрдкреЛ рдкрд░ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдореЗрдВ рд╣реИред рдЖрдкрдХреА рдЯреАрдо рдЗрд╕рдХрд╛ рдкрддрд╛ рдХреИрд╕реЗ рд▓рдЧрд╛ рдкрд╛рдПрдЧреА? рдХреБрдВрдЬреА рд▓реАрдХ рд╣реЛрдиреЗ рдХрд╛ рдХреЛрдИ рдЦрддрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рдирд┐рдЬреА рднрдВрдбрд╛рд░ рд╣реИред

рдЕрдм, рдореЗрд░реЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА:

  • рдЙрдкрдЧреНрд░рд╣, рдЖрдИрдкреАрд╡реА 6ред рдХреЛрдИ рджреВрд░рд╕реНрде рдЗрдирдмрд╛рдЙрдВрдб рдХрдиреЗрдХреНрд╢рдиред
  • рдореИрдВ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдкрд░ рдРрдк рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ

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

рдЖрдкрдХрд╛ рдРрдк рдИрдореЗрд▓ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рдЖрдк рдпрд╣рд╛рдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: https://sendgrid.com/docs/API_Reference/api_v3.html рдФрд░ рдЙрд╕ рдбреЙрдХреНрд╕ рдкреГрд╖реНрда рдкрд░ "рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдПрдВ" рдЯреИрдм рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ? рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╡рд╛рдкрд╕ рдорд┐рд▓рддреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдФрд░ рддреНрд░реБрдЯрд┐ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред

@ рдЪреЗрдореНрдмрд░

image

@mbernier рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдиреЛрдб рдореЗрдВ рдЕрднреА рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рд╣реЛ рд░рд╣реА рд╣реИрдВред js

image

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдЦрд╛рддрд╛ рд╕рдХреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк app.sendgrid.com рдкрд░ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреГрд╖реНрда рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реВрдЪрдирд╛рдПрдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдЧрд╛, рддрд╛рдХрд┐ рдпрд╣ рд╕рд╛рдмрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдЖрдк рдПрдХ рдЕрдЪреНрдЫреЗ рдкреНрд░реЗрд╖рдХ рд╣реИрдВред

@mbernier рдореЗрд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЦрд╛рддрд╛ рдХрдо рд╕реЗ рдХрдо 2 рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╕рдХреНрд░рд┐рдп рд╣реИред рдореИрдВрдиреЗ рд▓реЙрдЧ рдХреА рдЬрд╛рдБрдЪ рдХреА рдФрд░ рдЧреНрд░рд╛рд╣рдХ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдИрдореЗрд▓ рдЕрднрд┐рдпрд╛рди рдФрд░ рд╕рд╛рдорд╛рди рднреЗрдЬ рд░рд╣рд╛ рд╣реИ? рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВред

@mbernier рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдЗрдВрдЯрд░реЗрдХреНрдЯрд┐рд╡ рдЕрдХрд╛рдЙрдВрдЯ рдореЗрдиреВ рд╕реЗ рд╕реЗрдЯрдЕрдк рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛, рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛ред рдЗрддрдирд╛ рдЕрдЬреАрдмред

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

рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдЕрдм рдпрд╣ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ!

@ r3wt рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВ!

@mbernier рдореБрджреНрджрд╛ рдлрд┐рд░ рд╕реЗ рд╣реЛ рд░рд╣рд╛ рд╣реИред

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

рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдЯреАрдо рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓реЗ рдЧрдП рдореВрд▓ рд╕рдорд░реНрдерди рдЯрд┐рдХрдЯ рдФрд░ рдЗрд╕ рдзрд╛рдЧреЗ рд╕реЗ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ? рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдЦрд╛рддреЗ рдореЗрдВ рдХреБрдЫ рд╣реБрдЖ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдирдХреЗ рдкрд╛рд╕ рдЖрдкрдХреЗ рдЦрд╛рддреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╣реЛрдВрдЧреЗред

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

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

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

рдмрд╕ рдЖрдкрдХреЛ рдмрддрд╛ рджреЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╣реА рд╕рдорд╛рди рдореБрджреНрджреЗ рдереЗ рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ (рдЕрднреА рднреА рдирдпрд╛)ред рд╕рдорд╛рдзрд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдореЗрдВ рд╕реЗрдЯрдЕрдк API рдХреБрдВрдЬреА рдЪрд░ рдХреЗ рд▓рд┐рдП рдЧрдпрд╛ рдерд╛ Heroku https://devcenter.heroku.com/articles/sendgrid#setup -api-рдХреА-рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЪрд░
рдЕрдм рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВред

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