Sendgrid-nodejs: كيفية إرفاق ملف PDF من عنوان URL إلى البريد الإلكتروني باستخدام @ sendgrid / mail؟

تم إنشاؤها على ٢٢ يناير ٢٠١٨  ·  10تعليقات  ·  مصدر: sendgrid/sendgrid-nodejs

ملخص القضية

أريد إرفاق عنوان url بالبريد الإلكتروني ، لقد استخدمت بعض الحلول مثل الحصول على عنوان url بتنسيق pdf حسب الطلب أو قراءته كملف ولكنه لم يعمل.

تفاصيل تقنية:

  • 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 ثنائي وليس سلسلة ، أعتقد أنه يجب عليك تحديد encoding: null في الخيارات التي تمررها لطلبها حتى لا تحاول مكتبة الطلبات فك تشفيرها كسلسلة utf-8.
على سبيل المثال:

request = require('request');

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

نقلاً عن README للطلب :

التشفير - الترميز لاستخدامه في مجموعة ترميز بيانات الاستجابة. إذا كانت القيمة فارغة ، فسيتم إرجاع النص كمخزن مؤقت. سيتم تمرير أي شيء آخر (بما في ذلك القيمة الافتراضية لـ undefined) كمعامل ترميز إلى toString () (مما يعني أن هذا هو utf8 افتراضيًا). (ملاحظة: إذا كنت تتوقع بيانات ثنائية ، فيجب عليك تعيين التشفير: فارغ. )

ال 10 كومينتر

مرحبا ShahrokhNiakan ،

هل جربت المثال هنا ؟ إذا كان الأمر كذلك ، هل يمكنك مشاركة الرمز حتى نحاول إعادة إنتاجه؟

شكر!

مع أحر تحياتي،

إلمر

thinkingserious لقد وإرفاقه بالبريد ولكنها ليست طريقة جيدة!
هذا هو المثال الخاص بي ، هذا فقط للاختبار :)
شكرا جزيلا

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 هكذا ؟

مع أحر تحياتي،

إلمر

thinkingserious لقد اختبرته ولكن ملف PDF أحيانًا لا يكون
شكرا جزيلا

request = require('request');

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

});

مرحبا ShahrokhNiakan ،

هل تختبر باستخدام نفس ملف PDF أم ملفات مختلفة؟

في الحالات التي يكون فيها ملف PDF غير قابل للقراءة ، هل من الممكن التحقق من أن ملف PDF المصدر غير تالف؟

مرحبا ShahrokhNiakan ،

شكرا جزيلا. هذا الآن على بلدي المتراكمة للمراجعة.

شيء واحد قد تفكر فيه في الوقت الحالي هو أنك ربما تواجه قيود الحجم .

مع أحر تحياتي،

إلمر

ShahrokhNiakan نظرًا لأن ملف pdf ثنائي وليس سلسلة ، أعتقد أنه يجب عليك تحديد encoding: null في الخيارات التي تمررها لطلبها حتى لا تحاول مكتبة الطلبات فك تشفيرها كسلسلة utf-8.
على سبيل المثال:

request = require('request');

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

نقلاً عن README للطلب :

التشفير - الترميز لاستخدامه في مجموعة ترميز بيانات الاستجابة. إذا كانت القيمة فارغة ، فسيتم إرجاع النص كمخزن مؤقت. سيتم تمرير أي شيء آخر (بما في ذلك القيمة الافتراضية لـ undefined) كمعامل ترميز إلى toString () (مما يعني أن هذا هو utf8 افتراضيًا). (ملاحظة: إذا كنت تتوقع بيانات ثنائية ، فيجب عليك تعيين التشفير: فارغ. )

brafdlog نجح الحل الخاص بك بالنسبة لي! شكر!

كانت وحدة SendGrid السابقة تدعم تحديد عناوين URL للمرفقات. كان ذلك مريحًا للغاية. لماذا يجب على كل مرسل أن يهتم بإرسال محتوى ضخم لـ base64. يجب أن يكون Sendgrid قادرًا على القيام بذلك.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات