Saya ingin melampirkan url ke Email Saya menggunakan beberapa solusi seperti mendapatkan url pdf berdasarkan permintaan atau membacanya sebagai file tetapi tidak berhasil.
Halo @Shahrokiakan ,
Sudahkah Anda mencoba contoh di sini ? Jika ya, dapatkah Anda membagikan kode agar kami dapat mencoba mereproduksi?
Terima kasih!
Salam hangat,
Elmer
@thinkingserious Saya memperbaikinya dengan mengunduh url pdf dan kemudian membaca file dan melampirkannya ke email tetapi itu bukan cara yang baik!
Ini contoh kode saya, Ini hanya untuk tes :)
Terima kasih
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);
});
});
}
});
});
Halo @ShahrokhNiakan ,
Terima kasih telah membagikan solusi Anda.
Bagaimana dengan mengambil file dari url seperti itu ?
Salam hangat,
Elmer
@thinkingserious Saya mengujinya tetapi file PDF terkadang tidak OK dan tidak dapat dibaca di lampiran email.
Terima kasih
request = require('request');
request.get( url, function(err, res) {
var base64File = new Buffer(res.body).toString('base64');
...
});
Halo @Shahrokiakan ,
Apakah Anda menguji dengan PDF yang sama atau yang berbeda?
Dalam kasus di mana PDF tidak dapat dibaca, apakah mungkin untuk memverifikasi bahwa PDF sumber tidak rusak?
Halo @thinkingserious
Saya menguji tautan PDF ini di bawah ini:
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
Halo @Shahrokiakan ,
Terima kasih. Ini sekarang di backlog saya untuk ditinjau.
Satu hal yang mungkin Anda pertimbangkan untuk sementara waktu adalah mungkin Anda menghadapi batasan ukuran .
Salam hangat,
Elmer
@ShahrokNiakan karena pdfnya adalah biner, bukan string, menurut saya Anda harus menentukan encoding: null
dalam opsi yang Anda berikan untuk meminta sehingga perpustakaan permintaan tidak akan mencoba mendekodekannya sebagai string ut-8.
Misalnya:
request = require('request');
request.get( url, { encoding: null } function(err, res) {
var base64File = new Buffer(res.body).toString('base64');
...
});
Mengutip dari README permintaan :
encoding - pengkodean untuk digunakan pada setEncoding data respons. Jika null, tubuh akan dikembalikan sebagai Buffer. Yang lainnya (termasuk nilai default undefined) akan diteruskan sebagai parameter encoding ke toString () (artinya ini secara efektif adalah utf8 secara default). (Catatan: jika Anda mengharapkan data biner, Anda harus menyetel encoding: null. )
@brafdlog solusi Anda berhasil untuk saya! Terima kasih!
Modul SendGrid sebelumnya memiliki dukungan untuk menentukan URL untuk lampiran. Itu sangat nyaman. Mengapa setiap pengirim harus repot-repot mengirim konten base64 yang besar. Sendgrid seharusnya bisa melakukan itu.
Komentar yang paling membantu
@ShahrokNiakan karena pdfnya adalah biner, bukan string, menurut saya Anda harus menentukan
encoding: null
dalam opsi yang Anda berikan untuk meminta sehingga perpustakaan permintaan tidak akan mencoba mendekodekannya sebagai string ut-8.Misalnya:
Mengutip dari README permintaan :