Sendgrid-nodejs: рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдорд┐рд╕рд┐рдлрд╛рдИ-рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реИ

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

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

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдФрд░ рдпрд╣ sendgrid.js рдХреЗ рдЕрдВрджрд░ 'рдЗрд╕' рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдг рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, SendGrid рдХрд╛рд░рдгреЛрдВ рдкрд░ 'send' рдкрджреНрдзрддрд┐ рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП 'api_user' рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдИрдореЗрд▓ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдпрд╣ рдПрдХ рд╢рд░реНрдо рдХреА рдмрд╛рдд рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдореБрдЭреЗ рдХреЙрд▓рдмреИрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЗрдВрдЯрд░реНрди рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рд╣реА рд╕рдВрджрд░реНрдн рдХреЛ рдмрд╛рдВрдзрддреЗ рд╣реИрдВ, рдпрд╛ _this рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ sendgrid.js рдХреЗ рднреАрддрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ)ред

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

help wanted community enhancement

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

@antony @dslounge рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреНрд▓реВрдмрд░реНрдб рдХреЗ рд▓рд┐рдП "рдЗрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдХреЗ рдмреНрд▓реВрдмрд░реНрдб рдХреЗ рдкреНрд░реЙрдорд┐рд╕ рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдорд┐рдд рд╣реИред

const Promise = require('bluebird');
const sendgrid = require('sendgrid')(sendgridKey);
const sendEmail = Promise.promisify(sendgrid.send, { context: sendgrid });

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

рд╣реИрд▓реЛ @antony ,

рд╣рдо рдЗрд╕ рдЕрдиреБрд░реЛрдз рдХреЛ рд╣рдорд╛рд░реЗ рдмреИрдХ рд▓реЙрдЧ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред

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

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

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

рдореИрдВ рд╕рд┐рд░реНрдл рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рджреВрд╕рд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдореИрдВ рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореИрдВ рдкреНрд░реЙрдорд┐рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред @antony рдпрджрд┐ рдЖрдк рдЙрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдореЗрд░реЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧрд╛: рдбреА

Btw, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдПрдХ рд╡рд╛рджреЗ рдореЗрдВ sendgrid.send рд▓рдкреЗрдЯрдирд╛ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ (es6 рдЙрджрд╛рд╣рд░рдг):

const Promise = require('bluebird');
const sendgrid = require('sendgrid')(sendgridKey);
const sendEmail = (params) => {
  return new Promise((resolve, reject) => {
    sendgrid.send(params, (err, json) => {
      if (err) {
        reject(err);
      } else {
        resolve(json);
      }
    });
  });
};

sendEmail(emailParams)
  .then((json) => {
    //success
  })
  .catch((err) => {
    //error
  });

@antony @dslounge рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреНрд▓реВрдмрд░реНрдб рдХреЗ рд▓рд┐рдП "рдЗрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдХреЗ рдмреНрд▓реВрдмрд░реНрдб рдХреЗ рдкреНрд░реЙрдорд┐рд╕ рдореЗрдердб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдорд┐рдд рд╣реИред

const Promise = require('bluebird');
const sendgrid = require('sendgrid')(sendgridKey);
const sendEmail = Promise.promisify(sendgrid.send, { context: sendgrid });

рдореИрдВ рдмреНрд▓реВрдмрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЬрдм Sendgrid.send () рдХреЛ рдХреЙрд▓рдмреИрдХ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрд╕ рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░реЗрдВред рдмреНрд▓реВрдмрд░реНрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ

@mynameiscoffey рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕рд╣реА рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред

рдирдорд╕реНрдХрд╛рд░ рд▓реЛрдЧреЛрдВ,

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ Parse рдФрд░ Sendgrid рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рд╣реЛ рдФрд░ Parse рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓реЗ рдЧрдП рд╣реЛрдВред рдпрд╣рд╛рдВ @dslounge рдХреЛрдб рдХрд╛ "Parse.Promified" рд╕рдВрд╕реНрдХрд░рдг рд╣реИ (рдЬреЛ рдореИрдВ рдЖрдкрдХреЛ рд╕реНрдЯрд╛рд░ рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЗрд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рдШрдВрдЯреЗ рдмрдЪрд╛рдпрд╛):

return new Parse.Promise(function (resolve, reject) {
  sendgrid.send({
    to: xxx,
    from: xxx,
    subject: xxx,
    text: xxx,
    replyto: xxx
  }, function (err, json) {
    if (err) {
      reject(err);
    } else {
      resolve(json);
    }
  });
});

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

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ 'рд╕рдорд╕реНрдпрд╛' рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрдиреА рд╣реБрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЦреЛрд▓ рд░рд╣рд╛ рд╣реВрдВред

рдЖрдк рдпрд╣рд╛рдВ рдирдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ: https://github.com/sendgrid/sendgrid-nodejs/tree/v3betaред рдпрд╣ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдмреАрдЯрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

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

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

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

@thinkingsouble рдХреНрдпрд╛ рдЖрдкрдиреЗ @ manuel-di-iorio рдХреЗ рд╕реБрдЭрд╛рд╡ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рджрд┐рдпрд╛ рд╣реИ? рдпрджрд┐ рдХреЛрдИ рдХреЙрд▓рдмреИрдХ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЗ рдПрдкреАрдЖрдИ рд╕реЗ рдПрдЧ рд░рд┐рдЯрд░реНрди? рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред

рдЕрднреА рддрдХ @adambuczynski рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВред

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

рдореИрдВ рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЛ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рд╣реИ!

@thinkingsouble рд╣рд╛рдБ, рдореИрдВрдиреЗ рдХреЛрдб рдореЗрдВ рджреЗрдЦрд╛ рд╣реИ, рдХреБрдЫ рд╕реБрдзрд╛рд░ рд╣реИрдВ рдЬреЛ рдореИрдВ

рдореИрдВрдиреЗ рдЗрд╕ рд░реИрдкрд░ рдХреЛ рдПрдХ рд╡рд╛рджрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдкреНрд░реЗрд╖рдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рд╣реИ:

/**
 * Send email (wrapped in promise)
 */
function sendMail(mail) {
  return new Promise((resolve, reject) => {

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

    //Send request
    sg.API(request, response => {
      if (response && response.statusCode &&
        response.statusCode >= 200 && response.statusCode <= 299) {
        resolve(response);
      }
      reject(new SendMailError(
        'Sendgrid response error ' + response.statusCode
      ));
    });
  });
}

@adambuczynski рдиреЗ рдпрд╣рд╛рдБ рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рд╛ рд╣реИ: https://github.com/sendgrid/sendgrid-nodejs/issues/261

рдорд░реНрдЬ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдКрдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдФрд░ + 1 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рд╕рдмрдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

@thinkingserious рдореИрдВ рддреБрдореНрд╣реЗрдВ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ, # 261 рдХрд╛ рдорддрд▓рдм рд▓рдЧрддрд╛ рд╣реИ :)

Https://github.com/sendgrid/sendgrid-nodejs/releases/tag/v4.0.0 рдХреЗ рд╕рд╛рде рдлрд┐рдХреНрд╕реНрдб

@adamreisnz , рдЖрдкрдХреЗ рдХреЛрдб рдкрд░ рдПрдХ рдлрд┐рдХреНрд╕: рдкреНрд░рд▓реЗрдЦрди рдХреА

sg.API (рдЕрдиреБрд░реЛрдз, рдлрд╝рдВрдХреНрд╢рди (рддреНрд░реБрдЯрд┐, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛) {

рд╡реИрд╕реЗ рднреА, рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдареАрдХ рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдпрд╛ рд╢рд╛рдпрдж рдореИрдВ рдЗрд╕реЗ рдпрд╛рдж рдХрд┐рдпрд╛, рдзрдиреНрдпрд╡рд╛рдж :)
рдЬрдм рд╕реЗ рдореИрдВрдиреЗ рдЗрд╕ рд╕рд░рд▓ рд░реИрдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ Sendgrid рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рд╣реИ: https://www.npmjs.com/package/sendgrid-mailer

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

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

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

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

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

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

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