Sendgrid-nodejs: рдореИрдВ рдЕрдиреБрд▓рдЧреНрдирдХ рдХреИрд╕реЗ рдЬреЛрдбрд╝реВрдВ?

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

рд╣рдорд╛рд░реЗ рдИрдореЗрд▓ рдареАрдХ рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЕрдм рдПрдХ рдЕрдиреБрд▓рдЧреНрдирдХ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреА рдирдХрд▓ рдХреА: https://github.com/sendgrid/sendgrid-nodejs/blob/93763a74a85969382d59fcb3708d22051498f99/8/examples/helpers/mail/example.js

рдФрд░ рдХреЛрдб рдмрдирд╛рдпрд╛ рдЬреИрд╕реЗ:

const sendgrid: any = require('sendgrid')(process.env.sendgrid_key);

sendEmail(data: IEmailData): void {
    const email: any = new sendgrid.Email();
    email.addTo(data.emailTo);
    for (let attachment in data.attachments)
      this.addAttachment(email, attachment);
    sendgrid.send(email, (error: any, json: string) => {
      if (error)
        console.log(error);
    });
  }

  addAttachment(email: any, attachmentData: any): void {
    const attachment = new sendgrid.Attachment();
    attachment.setContent(attachmentData.content);
    attachment.setType(attachmentData.type);
    attachment.setFilename(attachmentData.filename);
    attachment.setDisposition(attachmentData.disposition);
    email.addAttachment(attachment);
  }

рд▓реЗрдХрд┐рди sendEmail рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрдВ sendgrid.Attachment is not a function (рджреВрд╕рд░реЗ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐) рдорд┐рд▓рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдкреНрд░реЗрд╖рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

{ api_key: 'SG.DaV0L',
  api_user: null,
  options: 
   { uriParts: 
      { protocol: 'https',
        host: 'api.sendgrid.com',
        port: '',
        endpoint: '/api/mail.send.json' },
     uri: 'https://api.sendgrid.com/api/mail.send.json' },
  version: '1.9.2',
  Email: [Function: Email],
  smtpapi: [Function: smtpapi],
  send: [Function] }
  • рдХреНрдпрд╛ рдЙрджрд╛рд╣рд░рдг рдЧрд▓рдд рд╣реИ?
  • рдХреНрдпрд╛ рд╣рдореЗрдВ рдЕрдЯреИрдЪрдореЗрдВрдЯ рд╣реЗрд▓реНрдкрд░ рдХреНрд▓рд╛рд╕ рдХреЛ рдХрд┐рд╕реА рдФрд░ рддрд░рд╣ рд╕реЗ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдзрдиреНрдпрд╡рд╛рдж,
рд░рд┐рдЪрд░реНрдбред

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

рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдВрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рдирдИ рдХрдбрд╝реА рд╣реИ:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

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

рдХреЛрдб рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж рдкрддрд╛ рдЪрд▓рд╛ред рдЬреАрдереБрдм рдореЗрдВ рд╡рд╣ рдЙрджрд╛рд╣рд░рдг рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╣реИред рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

addAttachment(email: any, attachmentData: any): void {    
  email.addFile(attachmentData);
}

рдзрдиреНрдпрд╡рд╛рдж @RichardJECooke ,

рд╣рдо рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗред рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдореЗрд▓ рдкрддреЗ рдФрд░ рдЯреА-рд╢рд░реНрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ [email protected] рдкрд░ рдИрдореЗрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЖрдкрдХреЛ

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

рдЕрдм рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдВ рдПрдХ рдЕрдиреБрд▓рдЧреНрдирдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#attachments

рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдВрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рдирдИ рдХрдбрд╝реА рд╣реИ:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

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

рдореИрдВрдиреЗ рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкрд╛рдпрд╛ рдХрд┐ рдХреНрдпреЛрдВ рдЬреАрдореЗрд▓ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдХрд╛рд░рдг рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╡реЗ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдореИрдВ рдПрдХ content_id рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд▓рдЧреНрдирдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдпрд╣ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдирд┐рдпрдорд┐рдд src рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЬрдм рдЗрд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЧреНрд░рд┐рдб рдЧреНрд░рд┐рдб рдПрдХ рдмреБрд░рд╛ рдЕрдиреБрд░реЛрдз рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореЗрд░реА рд╡рд┐рдзрд┐ рд╣реИред

рдореИрдВ JPG рдХреЛ рдЗрд╕ рддрд░рд╣ рдПрдиреНрдХреЛрдб рдХрд░рддрд╛ рд╣реВрдВ:

    let bitmap = fs.readFileSync(imageDir);
    imageBase64URL = new Buffer(bitmap).toString('base64');

рддрдм рдореИрдВ рд╕рдВрд▓рдЧреНрдирдХ рддрд░реНрдХ рдХреЗ рдЕрдВрджрд░ рд╕рд╛рдордЧреНрд░реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдиреНрдХреЛрдбреЗрдб рдЬреЗрдкреАрдЬреА рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ:

mailer.send({
       to: '[email protected]',
       from: '[email protected]',
       subject: `You have been removed from ${house.name} by ${removerName}`,
       html: result,
       attachments: [
            {
               content: imageBase64URL,
               filename: 'cluttr-logo.jpg',
               contentId: 'cluttr-logo'
            },
       ]
});

рдЕрдВрдд рдореЗрдВ рдореИрдВ рдЕрдкрдиреЗ CID рдХреЛ рдЕрдкрдиреЗ ejs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реВрдВ:

html <img alt="Logo" src="cid:cluttr-logo" width="60" height="60"

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

рдирдорд╕реНрддреЗ @ lvh1g15 ,

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ disposition: inline рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ ред

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

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

@thinkingsouble : рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдЕрдиреБрд▓рдЧреНрдирдХ рдХреИрд╕реЗ рднреЗрдЬреЗрдВ?

@thinkingsouble рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рдИрдореЗрд▓ рдореЗрдВ URL рдЕрдЯреИрдЪрдореЗрдВрдЯ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡реЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рдХреНрдпрд╛ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдореИрдВ рдЕрдкрдиреЗ рдИрдореЗрд▓ рдореЗрдВ рдЕрдЯреИрдЪрдореЗрдВрдЯ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реВрдВред Sendgrid рдкрд░ рдЕрдЯреИрдЪрдореЗрдВрдЯ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддреЗ рд╣реБрдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдбреЙрдХреНрдЯрд░ рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рд╕рд╛рджрд░,
рдореЛрд╣рд┐рдд

@thinkingsouble : рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдЕрдиреБрд▓рдЧреНрдирдХ рдХреИрд╕реЗ рднреЗрдЬреЗрдВ?

рдпрджрд┐ рдЖрдк v3 API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдмрд╕ attachments рдХреБрдВрдЬреА рдЬреЛрдбрд╝ рджреА рдЧрдИ рд╣реИред content рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ Base64 рдПрдиреНрдХреЛрдбреЗрдб

https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html

email = {
   "from":{  
      "email":"[email protected]"
   },
   "personalizations":[  
      {  
         "to":[  
            {  
               "email" : "[email protected]"
            }
         ],
         "dynamic_template_data": {
         }
      }
   ],
   "attachments": [
       {
           "content": "",
           "filename" ""
       }
   ]
   "template_id":"someid"
}

рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдВрдХ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдпрд╣ рдирдИ рдХрдбрд╝реА рд╣реИ:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

рдирдпрд╛ рдирдпрд╛ рд▓рд┐рдВрдХ: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/attachments.md

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

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

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

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

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

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

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