Sendgrid-nodejs: Bagaimana cara menambahkan lampiran?

Dibuat pada 6 Sep 2016  ·  10Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Email kami terkirim dengan baik dan sekarang kami ingin menambahkan lampiran. Jadi kami menyalin contoh ini: https://github.com/sendgrid/sendgrid-nodejs/blob/93763a74a85969382d59fcb3708d22051498f998/examples/helpers/mail/example.js

Dan membuat kode seperti ini:

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);
  }

Tetapi ketika memanggil sendEmail kita diberitahu sendgrid.Attachment is not a function (baris pertama dari fungsi kedua).

Saya mencetak objek sendgrid dan terlihat seperti ini:

{ 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] }
  • Apakah contohnya salah?
  • Haruskah kita mendapatkan kelas pembantu lampiran dengan cara lain?

Terima kasih,
Richard.

bug

Komentar yang paling membantu

Semua 10 komentar

Mengetahui setelah membaca kode. Contoh di github itu benar-benar salah. Seharusnya seperti ini:

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

Terima kasih @RichardJECooke ,

Kami akan menyelidiki lebih lanjut dan memperbaiki contoh. Terima kasih telah meluangkan waktu untuk membagikan solusinya!

Jika Anda mengirim email kepada kami di [email protected] dengan alamat surat dan ukuran T-shirt Anda, kami akan dengan senang hati mengirimi Anda barang curian.

Terima kasih!

Hai, Saya tahu masalah ini telah ditutup tetapi ini lebih merupakan masalah yang saya alami saat mencoba mengirim gambar yang disematkan ke pengguna gmail.

Saya menemukan beberapa alasan mengapa gmail tidak merender gambar karena beberapa keamanan tambahan yang mereka terapkan jadi saya pikir saya akan menggunakan parameter lampiran untuk menambahkan content_id dan melihat apakah itu berfungsi daripada menggunakan tag src biasa.

Ketika dikirim, jaringan kirim mengembalikan permintaan yang buruk. Inilah metode saya.

Saya menyandikan JPG seperti ini:

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

Kemudian saya memasukkan JPG yang dikodekan ke dalam bidang konten di dalam argumen lampiran:

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'
            },
       ]
});

Akhirnya saya menyematkan CID saya seperti itu ke file ejs saya:

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

Mudah-mudahan seseorang memiliki wawasan tentang apa yang saya lakukan salah. Terima kasih.

Halo @ lvh1g15 ,

Saya pikir Anda perlu menambahkan disposition: inline , seperti itu .

Salam hangat,

Elmer

@thinkingserious : Hai, apakah Anda tahu cara mengirim lampiran dengan template transaksional?

@thinkingserious adakah cara untuk menambahkan lampiran URL ke email saya, apa cara lain untuk menambahkan lampiran ke email saya. tidak bisa menemukan dokumen yang menyatakan cara kerja lampiran di Sendgrid.

Salam,
Mohit

@thinkingserious : Hai, apakah Anda tahu cara mengirim lampiran dengan template transaksional?

jika Anda menggunakan API v3, tambahkan saja kunci attachments . content harus dikodekan 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"
}
Apakah halaman ini membantu?
0 / 5 - 0 peringkat