Sendgrid-nodejs: كيف أضيف المرفقات؟

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

رسائل البريد الإلكتروني الخاصة بنا ترسل بشكل جيد ونريد الآن إضافة مرفق. لذلك قمنا بنسخ هذا المثال: https://github.com/sendgrid/sendgrid-nodejs/blob/93763a74a85969382d59fcb3708d22051498f998/examples/helpers/mail/example.js

وجعل الكود مثل ذلك:

const sendgrid: any = require('sendgrid')(process.env.sendgrid_key);

sendEmail(data: IEmailData): void {
    const email: any = new sendgrid.Email();
    email.addTo(data.emailTo);
    for (let attachment in data.attachments)
      this.addAttachment(email, attachment);
    sendgrid.send(email, (error: any, json: string) => {
      if (error)
        console.log(error);
    });
  }

  addAttachment(email: any, attachmentData: any): void {
    const attachment = new sendgrid.Attachment();
    attachment.setContent(attachmentData.content);
    attachment.setType(attachmentData.type);
    attachment.setFilename(attachmentData.filename);
    attachment.setDisposition(attachmentData.disposition);
    email.addAttachment(attachment);
  }

ولكن عند استدعاء sendEmail يتم إخبارنا sendgrid.Attachment is not a function (السطر الأول من الوظيفة الثانية).

لقد قمت بطباعة كائن Sendgrid ويبدو كالتالي:

{ api_key: 'SG.DaV0L',
  api_user: null,
  options: 
   { uriParts: 
      { protocol: 'https',
        host: 'api.sendgrid.com',
        port: '',
        endpoint: '/api/mail.send.json' },
     uri: 'https://api.sendgrid.com/api/mail.send.json' },
  version: '1.9.2',
  Email: [Function: Email],
  smtpapi: [Function: smtpapi],
  send: [Function] }
  • هل المثال خاطئ؟
  • هل يجب أن نحصل على فئة مساعد التعلق بطريقة أخرى؟

شكرا جزيلا،
ريتشارد.

bug

التعليق الأكثر فائدة

رابط المثال لا يعمل.
هذا هو الرابط الجديد:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

ال 10 كومينتر

برزت بعد قراءة الكود. هذا المثال في جيثب خاطئ تمامًا. يجب أن يكون مثل هذا:

addAttachment(email: any, attachmentData: any): void {    
  email.addFile(attachmentData);
}

شكرا @ RichardJECooke ،

سنحقق أكثر ونصلح المثال. شكرا لأخذ الوقت لمشاركة الحل!

إذا قمت بإرسال بريد إلكتروني إلينا على

شكر!

رابط المثال لا يعمل.
هذا هو الرابط الجديد:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

مرحبًا ، أعلم أن هذه المشكلة قد تم إغلاقها ولكن هذه مشكلة أواجهها عند محاولة إرسال الصور المضمنة إلى مستخدم gmail.

لقد وجدت سببين لعدم عرض gmail للصور بسبب بعض الأمان الإضافي الذي يفرضونه ، لذلك اعتقدت أنني سأستخدم معلمة المرفقات لإضافة content_id ومعرفة ما إذا كان ذلك يعمل بدلاً من استخدام علامة src العادية.

عندما يتم إرسالها ترسل الشبكة إرجاع طلب غير صالح. ها هي طريقتي.

أقوم بتشفير JPG كما يلي:

    let bitmap = fs.readFileSync(imageDir);
    imageBase64URL = new Buffer(bitmap).toString('base64');

ثم قمت بتمرير JPG المشفر إلى حقل المحتوى داخل وسيطة المرفقات:

mailer.send({
       to: '[email protected]',
       from: '[email protected]',
       subject: `You have been removed from ${house.name} by ${removerName}`,
       html: result,
       attachments: [
            {
               content: imageBase64URL,
               filename: 'cluttr-logo.jpg',
               contentId: 'cluttr-logo'
            },
       ]
});

أخيرًا ، قمت بتضمين CID الخاص بي كما هو الحال في ملف ejs الخاص بي:

html <img alt="Logo" src="cid:cluttr-logo" width="60" height="60"

آمل أن يكون لدى شخص ما بعض البصيرة لما أفعله خطأ. شكر.

مرحبًا @ lvh1g15 ،

أعتقد أنك بحاجة إلى إضافة disposition: inline ، هكذا .

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

إلمر

thinkingserious : مرحبًا ، هل تعرف كيفية إرسال مرفق مع نموذج المعاملات؟

thinkingserious هل هناك طريقة يمكنني من خلالها إضافة مرفق عنوان URL إلى بريدي الإلكتروني ، وما هي الطرق الأخرى التي يمكنني من خلالها إضافة مرفق إلى بريدي الإلكتروني. تعذر العثور بالضبط على مستند يوضح طرق عمل المرفقات على Sendgrid.

مع تحياتي،
موهيت

thinkingserious : مرحبًا ، هل تعرف كيفية إرسال مرفق مع نموذج المعاملات؟

إذا كنت تستخدم v3 API ، فأضف للتو مفتاح attachments . يحتاج content إلى تشفير Base64

https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html

email = {
   "from":{  
      "email":"[email protected]"
   },
   "personalizations":[  
      {  
         "to":[  
            {  
               "email" : "[email protected]"
            }
         ],
         "dynamic_template_data": {
         }
      }
   ],
   "attachments": [
       {
           "content": "",
           "filename" ""
       }
   ]
   "template_id":"someid"
}
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

wooyah picture wooyah  ·  4تعليقات

danielflippance picture danielflippance  ·  4تعليقات

Loriot-n picture Loriot-n  ·  4تعليقات

thinkingserious picture thinkingserious  ·  4تعليقات

nicoasp picture nicoasp  ·  3تعليقات