Sendgrid-nodejs: Sendgrid v3 Nodejs substitusi di template tidak bekerja

Dibuat pada 18 Apr 2018  ·  15Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Hai,

Dalam paket sendgrid nodejs npm saya mengalami masalah. Saya bisa mengirim email dengan substitusi dan template tapi masalahnya ada di email di client end% name%,% company% dll substitusi tidak diganti dengan nilai.

Cuplikan kode
const sgMail = membutuhkan ('@ sendgrid / mail');
sgMail.setApiKey (sendgrid_key);
var msg =
{
"personalisasi": [{
"ke": [{
"email": " [email protected] ",
"name": "Some Company"
}],
"substitusi": {
"% name%": "John",
"% company%": "Beberapa Perusahaan",
"% business%": "Faster Pheny"
},
"subject": "Faktur Untuk Beberapa Perusahaan!"
}],
"dari": {
"email": "Layanan pelanggan [email protected]",
"name": "CompanyA"
},
"membalas ke": {
"email": " [email protected] ",
"name": "Layanan Pelanggan"
},
"subject": "Faktur Untuk Beberapa Perusahaan!",
"template_id": "93f052da-08d4-46f2-8f0c-f2a193bceea0"
};

sgMail
.send (msg)
.then (() => {
console.log ('SendGrid :: Respon setelah berhasil mengirim email!');
})
.catch (error => {
console.error ('Kesalahan SendGrid :::' + error.toString ());
});

Kode dieksekusi dan menerima email tanpa mengganti% name%,% business%,% company%


Sekarang saya mencoba menggunakan situs sengrid https://sendgrid.com/docs/API_Reference/api_v3.html
Ini mengirimkan email dengan sempurna tanpa masalah apa pun dan semua penggantian dilakukan dengan benar.

Apa yang salah dalam kode npm javascript yang saya gunakan untuk menyetel nilai di sgMail.send (msg)?

Minta bantuan Anda.

question

Komentar yang paling membantu

Sendgrid v3 perlu mengganti substitusi dengan dynamic_template_data seperti ini:

const msg = {
    to: email,
    from: '[email protected]',
    subject: 'Sample Email Subject',
    templateId: 'your_template_id_here,
    substitutionWrappers: ['{{', '}}'],
    dynamic_template_data: {
      "data_item": "value" 
    }
   };

Semua 15 komentar

Sepertinya Anda melewatkan pembungkus substitusi. Aku hanya menggunakan contoh bahwa mereka digunakan dalam ini kasus penggunaan dengan template sederhana, dan bekerja.

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(process.env.SENDGRID_API_KEY);
sgMail.setSubstitutionWrappers('{{', '}}'); // Configure the substitution tag wrappers globally
const msg = {
  to: '[email protected]',
  from: '[email protected]',
  subject: 'Hello world',
  text: 'Notification',
  html: '<p></p>',
  templateId: 'your-id-goes-here',
  substitutions: {
    name: 'John'
  },

};
sgMail.send(msg);

Template saya hanya terdiri dari potongan kode ini:

<%body%> {{name}}

Rupanya, bagian <%body%> adalah wajib.

Mungkin Anda dapat mencoba menyetel pembungkus Anda ke sesuatu seperti {{ , }} , atau yang lain (atau % , % dalam kasus Anda), juga, perhatikan bahwa contoh tersebut tidak menyertakan pembungkus dalam objek substitusi, hanya nama substitusi tersebut.

Coba dengan sesuatu seperti ini:

"substitutions": {
  name: "John",
  company: "Some Company",
  business: "Faster Pheny"
},

Fantastis. Berhasil. Terima kasih banyak. Pembungkus Substitusi adalah apa yang hilang.

Terima kasih atas jawaban lengkapnya. Selamat membuat kode!

@jamur_kejang

Mungkin kita harus memanggil sgMail.setSubstitutionWrappers('{{', '}}'); secara default untuk menghindari masalah seperti ini di masa mendatang. Bagaimana menurut anda?

@jamur_kejang

Mungkin kami mencoba mendeteksi beberapa pembungkus umum, seperti% atau _?

Itu akan luar biasa. Ketika pengguna melalui portal Sendgrid membuat / mendesain templat, portal secara default menyisipkan substitusi% body% dan% name%. Jadi secara alami pengguna akan berpikir untuk tidak mengubah karakter% dan akan melanjutkan dengan template karena dia tidak sepenuhnya mengetahui fungsinya. Jika Sendgrid dapat menyarankan bahwa% bisa diubah ke karakter apapun atau fitur lebih suka {{}} maka pengguna akan menggunakannya atau template yang memuat pengaturan default mengganti% dengan {{di tempat pertama. Ini akan menghindari masalah yang saya hadapi.

Saya tidak tertarik pada deteksi otomatis, kecuali itu algoritma yang sangat kuat. Masalah dengan mencoba membuat proses terlalu pintar adalah hal itu dapat menyebabkan kesalahan debug yang berpotensi sulit dilakukan. Bagaimana jika seseorang menggunakan _ untuk penekanan? Misalnya, sangat _ benar-benar ditekankan. Itu tidak berarti bahwa simbol _ adalah pembungkus substitusi. Sama dengan % , Anda dapat menggunakannya untuk persentase dan ini mungkin mengelabui algoritme dengan berpikir bahwa Anda menggunakannya sebagai pembungkus substitusi di mana Anda tidak menggunakannya.

Karena Sendgrid pindah ke template setang, yang menggunakan {{ dan }} sebagai pembungkus substitusi, saya pikir ini adalah default yang masuk akal. Ada alasan mengapa karakter tersebut digunakan sebagai pembungkus substitusi dalam bahasa seperti setang, karena tidak terlalu umum dalam bahasa normal. Garis bawah dan persentase lebih umum dan berpotensi rentan terhadap salah tafsir.

Saya pikir itu hanya masalah mendokumentasikan ini dengan baik untuk membuatnya jelas. Dengan opsi untuk menentukan pembungkus Anda sendiri, pengguna harus memiliki semua yang mereka butuhkan untuk membuatnya berfungsi.

Jika ada yang memiliki ide untuk pendeteksian otomatis yang kuat, saya ingin melihat algoritma semu yang dapat menangani semua skenario dan semua kemungkinan pembungkus dengan baik, sambil menghindari kesalahan positif.

Pikiran?

Setuju. Pembaruan dokumentasi akan menjadi pilihan terbaik.

@adamreisnz @vinvantest setuju, silakan lihat https://github.com/sendgrid/sendgrid-nodejs/issues/681 untuk kemajuan.

Sendgrid v3 perlu mengganti substitusi dengan dynamic_template_data seperti ini:

const msg = {
    to: email,
    from: '[email protected]',
    subject: 'Sample Email Subject',
    templateId: 'your_template_id_here,
    substitutionWrappers: ['{{', '}}'],
    dynamic_template_data: {
      "data_item": "value" 
    }
   };

@polreskubar

Berikut contoh lengkapnya. Terima kasih!

Salam hangat,

Elmer

Sangat membingungkan bahwa Anda harus menggunakan dynamic_template_data
Alangkah baiknya untuk memperbarui dokumentasi https://sendgrid.com/docs/API_Reference/api_v3.html

Saya mencoba mengikuti contoh terbaru @goelmk . Tidak berhasil untuk saya :(
Template saya dibuat menggunakan editor WYSIWYG Anda dan saya mencoba meletakkan {{verifikasiUrl}} di komponen teks dan tautan url komponen tombol. tidak ada yang berhasil.

@shawnkoh Apakah Anda menyelesaikannya? Saya juga membuat template dengan perancang visual dan substitusi tidak berfungsi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

kiranshashiny picture kiranshashiny  ·  4Komentar

agostonbonomi picture agostonbonomi  ·  3Komentar

prasoonjalan picture prasoonjalan  ·  3Komentar

mikemaccana picture mikemaccana  ·  4Komentar

wooyah picture wooyah  ·  4Komentar