Je veux joindre l'URL à l'e-mail J'ai utilisé certaines solutions telles que l'obtention de l'URL PDF sur demande ou la lecture en tant que fichier, mais cela n'a pas fonctionné.
Salut @ShahrokhNiakan ,
Avez-vous essayé l'exemple ici ? Dans l'affirmative, pourriez-vous partager le code afin que nous puissions essayer de le reproduire?
Merci!
Meilleures salutations,
Elmer
@thinkingserious Je l'ai corrigé en téléchargeant l'URL du pdf, puis en lisant le fichier et en le
Voici mon exemple de code, c'est juste pour le test :)
Merci
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);
});
});
}
});
});
Bonjour @ShahrokhNiakan ,
Merci d'avoir partagé votre solution.
Que diriez-vous de récupérer le fichier de l'URL comme ça ?
Meilleures salutations,
Elmer
@thinkingserious Je l'ai testé mais le fichier PDF n'est parfois pas correct et ne peut pas être lu en pièce jointe.
Merci
request = require('request');
request.get( url, function(err, res) {
var base64File = new Buffer(res.body).toString('base64');
...
});
Salut @ShahrokhNiakan ,
Testez-vous avec le même PDF ou avec des fichiers différents?
Dans les cas où le PDF n'est pas lisible, est-il possible de vérifier que le PDF source n'est pas corrompu?
Salut cher @thinkingserious
J'ai testé ces liens PDF ci-dessous:
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
Salut @ShahrokhNiakan ,
Merci. Ceci maintenant sur mon arriéré pour un examen.
Une chose que vous pouvez considérer en attendant est que vous vous heurtez peut-être à des limitations de taille .
Meilleures salutations,
Elmer
@ShahrokhNiakan puisque le pdf est binaire plutôt qu'une chaîne, je pense que vous devriez spécifier encoding: null
dans les options que vous passez à la requête afin que la bibliothèque de requêtes n'essaye pas de le décoder comme une chaîne utf-8.
Par exemple:
request = require('request');
request.get( url, { encoding: null } function(err, res) {
var base64File = new Buffer(res.body).toString('base64');
...
});
Citation du README de la demande :
encoding - encodage à utiliser sur setEncoding des données de réponse. S'il est nul, le corps est renvoyé en tant que tampon. Tout le reste (y compris la valeur par défaut de undefined) sera passé comme paramètre d'encodage à toString () (ce qui signifie qu'il s'agit effectivement de utf8 par défaut). (Remarque: si vous attendez des données binaires, vous devez définir encoding: null. )
@brafdlog votre solution a fonctionné pour moi! Merci!
L'ancien module SendGrid prenait en charge la spécification d'URL pour les pièces jointes. C'était très pratique. Pourquoi chaque expéditeur devrait-il se soucier d'envoyer un contenu base64 volumineux? Sendgrid devrait pouvoir le faire.
Commentaire le plus utile
@ShahrokhNiakan puisque le pdf est binaire plutôt qu'une chaîne, je pense que vous devriez spécifier
encoding: null
dans les options que vous passez à la requête afin que la bibliothèque de requêtes n'essaye pas de le décoder comme une chaîne utf-8.Par exemple:
Citation du README de la demande :