Substitusi tidak berfungsi saat menggunakan pustaka ini. Ini berfungsi saat menggunakan curl.
`'use strict';
var config = {
apiKey: '',
from: '',
to: '',
templateId: ''
}
const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(config.apiKey);
async function sendTest() {
var newMsg = {
"from": {
"name": "Test Script",
"email": config.from
},
"personalizations": [{
"to": config.to,
"substitutions": {
"-firstName-": "Maciejs",
"%firstName%": "Maciej",
"-first_name": "Maciej",
"%first_name%": "Maciej"
}
}],
"subject": "test subject",
"content": [{
"type": "text/plain",
"value": "Hello, %firstName%!"
},
{
"type": "text/html",
"value": "<html><p>Hello, %firstName%!</html> "
}],
"template_id": config.templateId
}
await sgMail.send(newMsg);
}
sendTest();`
Saya juga melampirkan tangkapan layar template di editor SendGrid dan email yang saya dapatkan
@MaciejKrawczyk Sudahkah Anda mencoba menggunakan setSubstitutionWrapper
dan menghilangkan pembungkus dari substitutions
?
Ex:
sgMail.setSubstitutionWrappers('-', '-');
"substitutions": {
"firstName": "Maciejs"
}
Tidak yakin bagaimana Anda akan melakukan beberapa pembungkus sekaligus dengan cara ini, tetapi saya bisa membuat kapal selam bekerja dengan versi ini dengan tidak menentukan pembungkus di atribut substitusi. Kapal selam saya terlihat seperti
emailOptions.substitutions = {}
emailOptions.substitutions.CLIENT_NAME = myClientName
Berhasil. Terima kasih!
Terima kasih telah bersedia membantu @kmcurry!
Saya senang Anda aktif dan menjalankan @MaciejKrawczyk!
Ini pasti harus dimasukkan ke dalam README! Biaya saya 2 jam untuk mencari tahu ini!
@LASUMA ,
Itu tidak baik :(
Apakah dokumentasi ini membantu? Jika demikian, dapatkah Anda menunjukkan tempat pertama kali Anda mencari bantuan sehingga saya dapat memastikan bahwa kami memiliki tautan yang jelas di sana?
Terima kasih!
Salam hangat,
Elmer
@Serius ya. Dokter ini sangat membantu. Namun, karena saya berasal dari situs resmi, di mana kunci pengganti harus menyertakan pembungkusnya, saya tidak terlalu memperhatikan kasus penggunaan.
Hai @LASuma ,
Ketika Anda mengatakan Anda datang dari situs web resmi, dapatkah Anda memberi tahu saya URL apa yang Anda maksud? Terima kasih!
Hai @serius_hatii ,
Saya mengacu pada halaman ini . Bahkan bagian mencobanya memiliki kunci pengganti dengan pembungkusnya disertakan. Setelah membaca dokumentasi, saya pikir pustaka Node secara alami konsisten dengan dokumentasinya.
Terima kasih @LASkuma!
Itu umpan balik yang sangat membantu.
Saya tidak yakin dengan solusinya. Dokumen tersebut adalah untuk mereka yang ingin berinteraksi dengan API kami secara langsung vs. menggunakan salah satu perpustakaan pembantu kami.
Sebelumnya Anda menyebutkan bahwa kami harus menyertakan dokumentasi ini di README. Apa maksudmu disini ? Haruskah kita secara khusus menyebutkan kasus penggunaan substitusi di sana?
Sekali lagi terima kasih atas bantuan Anda!
Salam hangat,
Elmer
Ini pasti harus di readme. Saya mencoba semuanya, saya membaca semua dokumen di referensi api SendGrid, semua yang ada di GitHub (saya pikir), menghubungi dukungan dan saya akan membuat pembungkus api saya sendiri jika bukan karena @kmcurry Saya pikir itu akan jauh lebih mudah dan tidak membingungkan jika perpustakaan pembantu akan bekerja persis seperti API itu sendiri (lihat kode saya di awal utas).
Terima kasih @MaciejKrawczyk ,
Ini adalah umpan balik yang sangat bagus dan saya telah menambahkan ini ke backlog tim kami untuk mendalami lebih dalam. Kami akan memberikan pembaruan pada utas ini.
Terima kasih!
Salam hangat,
Elmer
Apakah ini sudah selesai? Saya mengalami masalah yang sama;
Hai @rizarrha ,
Sudahkah Anda mencoba saran @kmcurry ?
Belum. Saya akan memperbarui jika berhasil atau tidak segera.
Maaf atas balasan yang terlambat.
Untuk semua orang yang putus asa seperti saya kemarin: di v3 API Anda perlu menggunakan dynamic_template_data
alih-alih substitutions
, ini belum didokumentasikan di mana pun!
Kemudian gunakan {{var_name}}
dalam template email dan dynamic_template_data: { var_name: "var_value" }
dalam panggilan API.
@tkafka ya Tuhan! terima kasih untuk pria ini, telah menarik rambut saya selama 2 hari terakhir.
@tkafka Terima kasih banyak! Ini sangat membuat frustrasi! Butuh waktu 3 jam dari hariku ...
Berikut ini seluruh kode jika ada yang mencari yang sama:
var sendgrid = require('@sendgrid/mail');
sendgrid.setApiKey(env.sendgridApiKey);
sendgrid.setSubstitutionWrappers('{{', '}}');
var newMsg = {
"from": {
"name": "Your Company",
"email": env.businessEmail
},
"personalizations": [{
"to": order.email,
"dynamic_template_data": {"order_id": "1234", "first_name": "Max", "last_name": "Mustermann"}
}],
"subject": "test subject",
"content": [{
"type": "text/plain",
"value": "Hello, {{firstName}}!"
},
{
"type": "text/html",
"value": "<html><p>Hello, {{'firstName}}!</html> "
}],
"template_id": env.sendgridOrderConfirmationTemplateId
};
console.log("Sending confirmation email...")
return sendgrid.send(newMsg);
Dokumentasi sendgrid sangat buruk untuk sedikitnya.
Halo semuanya,
Silakan lihat masalah ini untuk kemajuan. Kami sedang mengerjakan pembaruan untuk C #, lalu Java, lalu SDK ini tepat setelah itu. Terima kasih atas kesabaran Anda dan maaf atas keterlambatan ini.
Salam hangat,
Elmer
Hah, dynamic_template_data
. Saya memecahkan teka-teki kecil Anda! :tersenyum:
Untuk pengguna skrip ketikan lainnya - Buat file mail.d.ts
:
import {MailData} from "@sendgrid/helpers/classes/mail";
// see https://github.com/sendgrid/sendgrid-nodejs/issues/638
declare module "@sendgrid/helpers/classes/mail" {
export interface MailData {
dynamic_template_data: {[key: string]: string};
}
}
Terima kasih @xduseko !
Komentar yang paling membantu
Untuk semua orang yang putus asa seperti saya kemarin: di v3 API Anda perlu menggunakan
dynamic_template_data
alih-alihsubstitutions
, ini belum didokumentasikan di mana pun!Kemudian gunakan
{{var_name}}
dalam template email dandynamic_template_data: { var_name: "var_value" }
dalam panggilan API.