์ด๋ฉ์ผ์ URL์ ์ฒจ๋ถํ๊ณ ์ถ์ต๋๋ค. ์์ฒญ์ ์ํด pdf URL์ ์ป๊ฑฐ๋ ํ์ผ๋ก ์ฝ๋ ๊ฒ๊ณผ ๊ฐ์ ์ผ๋ถ ์๋ฃจ์ ์ ์ฌ์ฉํ์ง๋ง ์๋ํ์ง ์์์ต๋๋ค.
์๋ ํ์ธ์ @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๋ ๊ทธ๋ ๊ฒ ํ ์ ์์ด์ผํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@ShahrokhNiakan pdf๋ ๋ฌธ์์ด์ด ์๋๋ผ ๋ฐ์ด๋๋ฆฌ์ด๋ฏ๋ก ์์ฒญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ utf-8 ๋ฌธ์์ด๋ก ๋์ฝ๋ฉํ์ง ์๋๋ก ์์ฒญ์ ์ ๋ฌํ๋ ์ต์ ์
encoding: null
๋ฅผ ์ง์ ํด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค.์ :
README ์์ฒญ ์์ ์ธ์ฉ :