Sendgrid-nodejs: Subjek tidak disetel jika menggunakan template Dinamis

Dibuat pada 7 Nov 2018  ·  29Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Saya mencoba menambahkan subjek untuk email saya dengan template dinamis tetapi tidak berhasil. Apakah ini sudah merupakan bug yang diketahui? Dapatkah Anda menyarankan solusi untuk masalah ini?

kode template:

<html>
<head>
  <title></title>
</head>
<body>
  <p> Hello <span>{{test_name}}!</span></p>
</body>
</html>

fungsi kirim email:

const sgMail = require('@sendgrid/mail');
sgMail.setApiKey(settings.sendgrid.api_key);
sgMail.setSubstitutionWrappers('{{', '}}');

const msg = {
    to: '[email protected]',
    from: settings.sendgrid.from,
    subject: 'Test Subject',
    templateId: settings.sendgrid.template_id,
    dynamic_template_data: {
    test_name: 'Testing Name'
    },
};

sgMail.send(msg);
question

Komentar yang paling membantu

Halo @jlouie ,

Apakah area subjek Anda terlihat seperti ini di UI?

screen shot 2019-01-24 at 1 30 06 pm

Salam hangat,

Elmer

Semua 29 komentar

Sama seperti # 834

@ 10c-zack begitu. Ini adalah masalah yang diketahui.

Ngomong-ngomong, solusi apa yang Anda lakukan untuk memperbaikinya?

@ nyel-dev Menyetel subjek template di situs web SendGrid berfungsi. Masalahnya adalah bahwa SendGrid's API tidak mengizinkan Anda menyediakan template saat Anda memicu template dinamis.

Halo @ nyel-dev,

Saya yakin dalam template transaksional Anda akan menetapkan subjek menjadi {{subject}}, lalu dalam kode Anda, Anda menetapkan data.subject menjadi "[TEST] My Email Subject" .

Apakah itu berhasil untuk Anda?

Salam hangat,

Elmer

Halo @thinkingserious , berharap Anda memiliki wawasan tambahan.

Saya beralih dari templat lama ke templat transaksional dan saya mengalami masalah yang sama sekarang (sendgrid-nodejs v6.3.1, Node: v8.11.4) bahkan setelah mengganti bidang subjek templat transaksional dengan {{subject}} . Saya belum secara eksplisit mengatur pembungkus substitusi melalui setSubstitutionWrappers() dan baru saja kembali ke set setang default (meskipun saya mencoba mengaturnya juga saat pengujian).

Saya telah mengonfirmasi bahwa saya melewati properti subject (tanpa tanda kutip atau karakter khusus) sebagai msg.subject dalam kasus pengujian pertama saya, msg.dynamic_template_data.subject dalam kasus pengujian kedua saya dan dengan keduanya ditetapkan untuk kasus uji ketiga saya dan email yang diterima masih belum diganti subjeknya seperti yang saya harapkan. Subjek email menunjukkan "(tanpa subjek)".

Menguji template itu sendiri di situs sendgrid dalam mode Pratinjau dan menyetel Data Uji, memang menggantikan teks seperti yang diharapkan.

Bantuan apa pun akan dihargai. Terima kasih!

* EDIT *
Saya juga harus menyebutkan bahwa substitusi di badan pesan diganti seperti yang diharapkan, hanya saja tidak di baris subjek.

Halo @jlouie ,

Berikut adalah contoh lengkapnya . Saya harap itu membantu!

Salam hangat,

Elmer

@thinkingserious subjek tidak ditampilkan di email sama dengan contoh

to: "[email protected]",
  from: "[email protected]",
  subject: "Hello world",
  text: "Hello plain world!",
  html: "<p>Hello HTML world!</p>",
  templateId: "d-xxxx",
  dynamic_template_data: {
    subject: "Testing Templates & Stuff",
    name: 'Some "Testing" One',
    city: "<b>Denver<b>"
  }

image

Halo @jlouie ,

Berikut adalah contoh lengkapnya . Saya harap itu membantu!

Salam hangat,

Elmer

@thinkingserious : Sayangnya, tidak. Saya masih mengalami baris Subjek yang hilang di email yang dikirim / diterima, seperti @nicholasess.

Halo @jlouie ,

Apakah area subjek Anda terlihat seperti ini di UI?

screen shot 2019-01-24 at 1 30 06 pm

Salam hangat,

Elmer

Ngomong-ngomong, saya bisa memecahkan masalah ini dengan menggunakan Set Subject pada antarmuka template Sendgrid. Terima kasih @thinkingserious

Saya menyarankan agar pengaturan berubah ke menu seperti kode, data uji.
image

Tempat di mana pengaturan disembunyikan: /

Terima kasih atas umpan baliknya @nicholasess! Saya akan meneruskannya ke tim desain.

Saya mengalami masalah yang sama, dan saya harus mengandalkan solusi ini, tetapi itu tidak akan berhasil tanpa memilah-milah masalah.

Ini sangat berlawanan dengan intuisi, karena dokumen mengatakan bahwa Anda menyetel subjek dalam panggilan API (dan merinci bagaimana Anda dapat menyetelnya secara global untuk pesan dan menimpanya dalam personalisasi, yang jelas hilang dengan solusi ini).

Kami juga kehilangan "kumpulan subjek default di halaman admin, yang dapat diganti dalam fitur panggilan API". Tidak, dengan solusi tersebut kami selalu harus menentukan subjek untuk template yang terpengaruh.

(Kecuali ada cara untuk menyetel default dalam {{}} interpolasi. Saya akan memeriksa dokumen untuk itu, apa yang saya temukan sejauh ini adalah tentang metode interpolasi menggunakan tanda hubung, yang sama sekali tidak saya kenal.)

@serius

Mengapa masalah ini ditutup? Itu tidak diperbaiki.

Saya tahu ini mungkin terlihat aneh, tetapi teman-teman pastikan Anda tidak membuka jendela atau tab dengan layar yang sama. UI Sendgrid memiliki autosave yang dapat menulis ulang semua data yang Anda simpan sebelumnya.

gunakan dalam mata pelajaran {{subject}}

dan kirim sebagai variabel seperti variabel lain,

begini cara kerjanya.

Saya terjebak dalam masalah ini begitu lama karena saya mengikuti dokumen dan berpikir saya melakukan sesuatu yang salah. Karena saya bermigrasi dari template lama, saya pikir API akan tetap sama dan saya terkejut melihatnya tiba-tiba tidak berfungsi seperti yang diharapkan.

Apakah ada rencana untuk memperbarui dokumentasi menjadi v3/mail/send untuk mencerminkan perubahan ini dengan benar?

Satu-satunya cara saya dapat menyelesaikan masalah ini adalah dengan _triple-stash_:

{{{ subject }}}

Menurut artikel ini https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/transactional-templates.md

Dapat mengonfirmasi menggunakan tanda kurung kurawal tiga alih-alih tanda kurung kurawal ganda di bidang subjek bekerja

Setiap kali saya menyimpan triple curly atau kode lainnya di baris subjek, kode tersebut kembali secara otomatis setelah beberapa menit ke standar <% subject%>.

Apakah ada orang lain yang mengalami masalah yang sama?

Apakah ada orang lain yang mengalami masalah yang sama?

Saya telah melihat sesuatu seperti ini ketika saya membuka dua jendela. SendGrid menyimpan otomatis, jadi jika Anda membuka dua jendela, keduanya akan membatalkan satu sama lain.

Cara kerjanya untuk saya:

digunakan di bidang subjek di SendGrid UI: {{{subject}}}

kirim "subject": "test" dalam message.dynamic_template_data

Saran : Kalian harus benar-benar mengerjakan dokumen Anda. Maksud saya, mereka benar-benar tersebar dan potongan-potongan sudah ketinggalan zaman.

Tanda kurung tiga masih berfungsi, saya hanya memeriksa untuk melihat apakah itu masih solusi resmi.

Terima kasih!

image

@tokopedia Ya.

Tolong lakukan buka kembali masalah! Dokumen masih tidak benar, menyarankan subject untuk diset pada tingkat atas permintaan. Namun, itu harus disertakan dalam dynamic_template_data dan subjek dalam template harus disetel sebagai {{subject}} atau kunci dinamis lainnya. Ini terbuka dari 2018 dan tidak ada perubahan apa pun dalam dokumentasi yang diperkenalkan sejak itu!

Saya mendapatkan kesalahan 400 permintaan dari server ketika saya mencoba menggunakan substitusi atau dynamic_template_data

Harap perbaiki dokumen Anda. dynamic_template_date seharusnya tidak valid berdasarkan https://github.com/sendgrid/sendgrid-python/blob/main/use_cases/kitchen_sink.md dan dokumentasi v3
Namun orang-orang melaporkan bahwa itu berhasil untuk mereka

apa yang sedang terjadi? 🤔

Cara kerjanya untuk saya:

digunakan di bidang subjek di SendGrid UI: {{{subject}}}

kirim "subject": "test" dalam message.dynamic_template_data

Saran : Kalian harus benar-benar mengerjakan dokumen Anda. Maksud saya, mereka benar-benar tersebar dan potongan-potongan sudah ketinggalan zaman.

Bagaimana melakukannya di PHP. Tolong bagikan kodenya!

Apakah saat ini dokumen hanya salah dalam menyarankan subjek itu dikirim sebagai parameter tingkat atas?

Cara kerjanya untuk saya:

digunakan di bidang subjek di SendGrid UI: {{{subject}}}

kirim "subject": "test" dalam message.dynamic_template_data

Saran : Kalian harus benar-benar mengerjakan dokumen Anda. Maksud saya, mereka benar-benar tersebar dan potongan-potongan sudah ketinggalan zaman.

Ini berhasil untuk saya! Dokter Anda akan terlihat seperti ini:

const msg = {
    to: toEmail,
    from: "email",
    templateId: "tempateId",
    dynamic_template_data: {
      subject: "subjectHere",
    },
  };

sendGridEmail
    .send(msg)
    .then(() => console.log("email sent"))
    .catch((error) => console.error(error.toString()))
Apakah halaman ini membantu?
1 / 5 - 1 peringkat

Masalah terkait

egges picture egges  ·  3Komentar

agostonbonomi picture agostonbonomi  ·  3Komentar

amlcodes picture amlcodes  ·  4Komentar

TobiahRex picture TobiahRex  ·  3Komentar

kiranshashiny picture kiranshashiny  ·  4Komentar