Sendgrid-nodejs: URL рдХреЛ рдИрдореЗрд▓ рд╕реЗ @ sendgrid / рдореЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреИрд╕реЗ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ?

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

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

рдореИрдВ url рдХреЛ рдИрдореЗрд▓ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдореИрдВрдиреЗ рдХреБрдЫ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬреИрд╕реЗ рдХрд┐ рдЕрдиреБрд░реЛрдз рджреНрд╡рд╛рд░рд╛ рдкреАрдбреАрдПрдл рдпреВрдЖрд░рдПрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдпрд╛ рдЗрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рдирд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред

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

  • sendgrid-nodejs рд╕рдВрд╕реНрдХрд░рдг: @ sendgrid / рдореЗрд▓: ^ 6.2.1
  • Node.js рд╕рдВрд╕реНрдХрд░рдг: 9.2.1
easy hacktoberfest help wanted help wanted question up for grabs up-for-grabs

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

@ShahrokhNiakan рдЪреВрдВрдХрд┐ рдкреАрдбреАрдПрдл рдмрд╛рдЗрдирд░реА рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ encoding: null рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЕрдиреБрд░реЛрдз рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрд╕реЗ utf-8 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рдЬреИрд╕реЗ:

request = require('request');

request.get( url, { encoding: null } function(err, res) {
 var base64File = new Buffer(res.body).toString('base64');
 ...
});

рдЕрдиреБрд░реЛрдз рдХреЗ

рдПрдиреНрдХреЛрдбрд┐рдВрдЧ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛ рдХреЗ рд╕реЗрдЯрдЗрдиреНрдХреЛрдбрд┐рдВрдЧ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧред рдпрджрд┐ рдЕрд╢рдХреНрдд, рд╢рд░реАрд░ рдПрдХ рдмрдлрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рднреА (рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореВрд▓реНрдп рд╕рд╣рд┐рдд) рдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ () (рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ utf8 рд╣реИ)ред (рдиреЛрдЯ: рдпрджрд┐ рдЖрдк рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдбреЗрдЯрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдЕрд╢рдХреНрддред )

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

рд╣рд╛рдп @ рд╢рд░реЛрдЦреНрдирдирдХрд╛рди ,

рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпрд╣рд╛рдВ рдЙрджрд╛рд╣рд░рдг

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

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

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

@thinkingsouble рдореИрдВрдиреЗ рдЗрд╕реЗ рдкреАрдбреАрдНрдлрд╝ url рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдФрд░ рдлрд┐рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрдврд╝рд╛ рдФрд░ рдореЗрд▓ рд╕реЗ рдЬреЛрдбрд╝рд╛ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ!
рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣реИ :)
рдзрдиреНрдпрд╡рд╛рдж

const sgMail = require('@sendgrid/mail');
    sgMail.setApiKey("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");

    var download = require('download-file'),
        fs = require('fs'),
        array = [],
        temp = [],
        files = [];

    array.push('https://www.antennahouse.com/XSLsample/pdf/sample-link_1.pdf');
    array.push('https://www.antennahouse.com/XSLsample/pdf/sample-link_1.pdf');
    array.push('https://www.antennahouse.com/XSLsample/pdf/sample-link_1.pdf');


    array.forEach(function(url) {

        temp++;

        var options = {
            directory: "./pdf",
            filename: temp.toString() + Date.now() + ".pdf"
        };

        download(url, options, function(err, res) {

            console.log( __dirname + '/pdf/' + options.filename );

            files.push(res);

            if ( array.length == files.length ) {

                // console.log( "hello" );

                var counter = 0,
                    attach = [];
                files.forEach( function(name, index) {

                    name = name.substring(1, name.length );

                    fs.readFile(__dirname + name, function(err, file) {

                        console.log( file );

                        var base64File = new Buffer(file).toString('base64');
                        counter++;

                        attach.push({
                            content : base64File,
                            filename : 'Report.pdf'
                        });

                        console.log( attach );


                    const msg = {
                            to: '[email protected]',
                            from: '[email protected]',
                            subject: 'Test',
                            text: 'this is test',
                            html: '<strong>Hello World</strong>',
                            attachments: attach,
                    };

                    // console.log( msg );

                  if ( counter == files.length )
                      sgMail.send(msg);

                    });


                });

                }

              });

    });

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

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

рдХреИрд╕реЗ url рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдерд┐рдпрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдРрд╕рд╛ рд╣реИ ?

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

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

@thinkingsouble рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рдХрднреА-рдХрднреА рдареАрдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рдореЗрд▓ рдЕрдиреБрд▓рдЧреНрдирдХ рдореЗрдВ рдкрдардиреАрдп рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдЬреА рд╢реБрдХреНрд░рд┐рдпрд╛

request = require('request');

request.get( url, function(err, res) {
 var base64File = new Buffer(res.body).toString('base64');
 ...

});

рд╣рд╛рдп @ рд╢рд░реЛрдЦреНрдирдирдХрд╛рди ,

рдХреНрдпрд╛ рдЖрдк рдПрдХ рд╣реА рдкреАрдбреАрдПрдл рдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВ?

рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рдкреАрдбреАрдПрдл рдкрдардиреАрдп рдирд╣реАрдВ рд╣реИ, рдХреНрдпрд╛ рд╕реНрд░реЛрдд рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдкреАрдбреАрдПрдл рджреВрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ?

рд╣рд╛рдп рдкреНрд░рд┐рдп @thinkings рд░рд╣рд╕реНрдпрдордп

рдореИрдВрдиреЗ рдиреАрдЪреЗ рдЗрди PDF рд▓рд┐рдВрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛:

http://www.africau.edu/images/default/sample.pdf
http://www.pdf995.com/samples/pdf.pdf
https://www.ets.org/Media/Tests/GRE/pdf/gre_research_validity_data.pdf

рд╣рд╛рдп @ рд╢рд░реЛрдЦреНрдирдирдХрд╛рди ,

рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдЕрдм рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдмреИрдХрд▓реЙрдЧ рдкрд░ рд╣реИред

рдорддрд▓рдм рд╕рдордп рдореЗрдВ рдПрдХ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╢рд╛рдпрдж рдЖрдк рдЖрдХрд╛рд░ рд╕реАрдорд╛рдУрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЪрд▓ рд░рд╣реЗ

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

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

@ShahrokhNiakan рдЪреВрдВрдХрд┐ рдкреАрдбреАрдПрдл рдмрд╛рдЗрдирд░реА рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ encoding: null рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЕрдиреБрд░реЛрдз рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЗрд╕реЗ utf-8 рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд░реЗрдЧреАред
рдЬреИрд╕реЗ:

request = require('request');

request.get( url, { encoding: null } function(err, res) {
 var base64File = new Buffer(res.body).toString('base64');
 ...
});

рдЕрдиреБрд░реЛрдз рдХреЗ

рдПрдиреНрдХреЛрдбрд┐рдВрдЧ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛ рдХреЗ рд╕реЗрдЯрдЗрдиреНрдХреЛрдбрд┐рдВрдЧ рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧред рдпрджрд┐ рдЕрд╢рдХреНрдд, рд╢рд░реАрд░ рдПрдХ рдмрдлрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИред рдХреБрдЫ рднреА (рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореВрд▓реНрдп рд╕рд╣рд┐рдд) рдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ () (рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ utf8 рд╣реИ)ред (рдиреЛрдЯ: рдпрджрд┐ рдЖрдк рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдбреЗрдЯрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдЕрд╢рдХреНрддред )

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

рдкрд╣рд▓реЗ SendGrid рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрдиреБрд▓рдЧреНрдирдХреЛрдВ рдХреЗ рд▓рд┐рдП URL рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдерд╛ред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдерд╛ред рд╣рд░ рдкреНрд░реЗрд╖рдХ рдХреЛ рднрд╛рд░реА рдмреЗрд╕ 64 рд╕рд╛рдордЧреНрд░реА рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред Sendgrid рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

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

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

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

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

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

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

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