Sendgrid-nodejs: @ sendgrid / mail์„ ์‚ฌ์šฉํ•˜์—ฌ URL์—์„œ ์ด๋ฉ”์ผ๋กœ PDF๋ฅผ ์ฒจ๋ถ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2018๋…„ 01์›” 22์ผ  ยท  10์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sendgrid/sendgrid-nodejs

๋ฌธ์ œ ์š”์•ฝ

์ด๋ฉ”์ผ์— URL์„ ์ฒจ๋ถ€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์š”์ฒญ์— ์˜ํ•ด pdf URL์„ ์–ป๊ฑฐ๋‚˜ ํŒŒ์ผ๋กœ ์ฝ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ ์  ์„ธ๋ถ€ ์‚ฌํ•ญ:

  • sendgrid-nodejs ๋ฒ„์ „ : @ sendgrid / mail : ^ 6.2.1
  • Node.js ๋ฒ„์ „ : 9.2.1
easy hacktoberfest help wanted help wanted question up for grabs up-for-grabs

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@ShahrokhNiakan pdf๋Š” ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ผ ๋ฐ”์ด๋„ˆ๋ฆฌ์ด๋ฏ€๋กœ ์š”์ฒญ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ utf-8 ๋ฌธ์ž์—ด๋กœ ๋””์ฝ”๋”ฉํ•˜์ง€ ์•Š๋„๋ก ์š”์ฒญ์— ์ „๋‹ฌํ•˜๋Š” ์˜ต์…˜์— encoding: null ๋ฅผ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ :

request = require('request');

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

README ์š”์ฒญ ์—์„œ ์ธ์šฉ :

encoding-์‘๋‹ต ๋ฐ์ดํ„ฐ์˜ setEncoding์— ์‚ฌ์šฉํ•  ์ธ์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค. null์ด๋ฉด ๋ณธ๋ฌธ์ด Buffer๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ (์ •์˜๋˜์ง€ ์•Š์€ ๊ธฐ๋ณธ๊ฐ’ ํฌํ•จ)์€ ์ธ์ฝ”๋”ฉ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ toString ()์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค (์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์‹ค์ƒ utf8์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค). (์ฐธ๊ณ  : ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ˆ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์ธ์ฝ”๋”ฉ์„ null๋กœ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. )

๋ชจ๋“  10 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @ShahrokhNiakan ,

์—ฌ๊ธฐ ์—์„œ ์˜ˆ์ œ๋ฅผ ์‹œ๋„ํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋ณต์ œ๋ฅผ ์‹œ๋„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ!

๋งˆ์Œ์„ ๋‹ด์•„,

Elmer

@thinkingserious pdf 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);

                    });


                });

                }

              });

    });

์•ˆ๋…•ํ•˜์„ธ์š” @ShahrokhNiakan ,

์†”๋ฃจ์…˜์„ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

URL์—์„œ ํŒŒ์ผ์„ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๋งˆ์Œ์„ ๋‹ด์•„,

Elmer

@thinkingserious ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ์ง€๋งŒ PDF ํŒŒ์ผ์€ ๋•Œ๋•Œ๋กœ Ok๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๋ฉ”์ผ ์ฒจ๋ถ€ ํŒŒ์ผ์—์„œ ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

request = require('request');

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

});

์•ˆ๋…•ํ•˜์„ธ์š” @ShahrokhNiakan ,

๋™์ผํ•œ PDF ๋˜๋Š” ๋‹ค๋ฅธ PDF๋กœ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

PDF๋ฅผ ์ฝ์„ ์ˆ˜์—†๋Š” ๊ฒฝ์šฐ ์›๋ณธ PDF๊ฐ€ ์†์ƒ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @thinkingserious

์•„๋ž˜์—์„œ์ด 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 ,

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ฒ€ํ† ๋ฅผ ์œ„ํ•ด ๋‚ด ๋ฐฑ ๋กœ๊ทธ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋™์•ˆ ๊ณ ๋ คํ•  ์ˆ˜์žˆ๋Š” ํ•œ ๊ฐ€์ง€๋Š” ์•„๋งˆ๋„ ํฌ๊ธฐ ์ œํ•œ ์— ๋งž์„œ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งˆ์Œ์„ ๋‹ด์•„,

Elmer

@ShahrokhNiakan pdf๋Š” ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ผ ๋ฐ”์ด๋„ˆ๋ฆฌ์ด๋ฏ€๋กœ ์š”์ฒญ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ utf-8 ๋ฌธ์ž์—ด๋กœ ๋””์ฝ”๋”ฉํ•˜์ง€ ์•Š๋„๋ก ์š”์ฒญ์— ์ „๋‹ฌํ•˜๋Š” ์˜ต์…˜์— encoding: null ๋ฅผ ์ง€์ •ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ :

request = require('request');

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

README ์š”์ฒญ ์—์„œ ์ธ์šฉ :

encoding-์‘๋‹ต ๋ฐ์ดํ„ฐ์˜ setEncoding์— ์‚ฌ์šฉํ•  ์ธ์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค. null์ด๋ฉด ๋ณธ๋ฌธ์ด Buffer๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ (์ •์˜๋˜์ง€ ์•Š์€ ๊ธฐ๋ณธ๊ฐ’ ํฌํ•จ)์€ ์ธ์ฝ”๋”ฉ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ toString ()์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค (์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์‹ค์ƒ utf8์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค). (์ฐธ๊ณ  : ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ˆ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์ธ์ฝ”๋”ฉ์„ null๋กœ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. )

@brafdlog ๊ท€ํ•˜์˜ ์†”๋ฃจ์…˜์ด ์ €์—๊ฒŒ

์ด์ „ SendGrid ๋ชจ๋“ˆ์€ ์ฒจ๋ถ€ ํŒŒ์ผ์— ๋Œ€ํ•œ URL ์ง€์ •์„ ์ง€์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ํŽธ๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์™œ ๋ชจ๋“  ๋ฐœ์‹ ์ž๋Š” ๋ถ€ํ”ผ๊ฐ€ ํฐ base64 ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด๋‚ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๊ณ ๋ฏผํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. Sendgrid๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰