Sendgrid-nodejs: Mengirim template transaksional membuang subjek yang ditentukan melalui objek data

Dibuat pada 31 Okt 2018  ·  19Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Ringkasan Masalah

Saat menggunakan fungsi sendgridMail.send untuk mengirim Template Transaksi, setiap baris subjek ditambahkan ke objek data yang diteruskan sendgridMail.send (melalui data.subject atau data.personalizations[someIndex].subject ) dibuang dan baris subjek yang ditentukan pada Templat Transaksional yang sebenarnya digunakan.

Perilaku yang saya harapkan adalah bahwa bidang yang ditentukan pada objek data akan menimpa bidang templat yang ada, tetapi tampaknya tidak demikian. Melihat dokumentasi untuk API Pengiriman Surat v3, deskripsi bidang template_id menyatakan:

Id template yang ingin Anda gunakan. Jika Anda menggunakan template yang berisi subjek dan konten (teks atau html), Anda tidak perlu menentukannya di tingkat personalisasi atau pesan.

Bagi saya, "Anda tidak perlu menentukannya di tingkat personalisasi atau pesan" menyiratkan bahwa Anda dapat mengganti subjek template. Jika bukan itu masalahnya, deskripsi harus diubah menjadi "Anda tidak dapat menentukannya di tingkat personalisasi atau pesan".

Contoh

  • Saya membuat template transaksional dengan subjek "Subjek Email Saya"
  • Saya mencoba mengirim email menggunakan sendgridMail.send mana saya menetapkan data.subject menjadi "[TEST] Subjek Email Saya"
  • Email yang saya terima memiliki baris subjek "Subjek Email Saya"

Langkah-langkah untuk Reproduksi

  1. Buat template transaksional di https://sendgrid.com yang memiliki subjek yang ditentukan
  2. Gunakan fungsi sendgridMail.send untuk mengirim template. Pastikan juga untuk menentukan data.subject atau data.personalizations[someIndex].subject .
  3. Konfirmasikan bahwa email diterima dengan baris subjek asli, bukan yang diteruskan ke API

Detail teknis:

  • sendgrid-nodejs Versi: 6.3.1
  • Versi Node.js: v8.11.3
non-library issue

Komentar yang paling membantu

Doh! Saya menemukan di mana {{subject}} perlu disetel. Jika ada orang lain yang mengalami masalah ini, masuk untuk mengedit template Anda, lalu klik "Pengaturan" di sebelah kiri. Akan ada ruang untuk memasukkan Subjek Anda. Masukkan {{subjek}} di sini.

Semua 19 komentar

Halo @10kc-zack,

Saya percaya pada templat transaksional Anda akan menetapkan subjek menjadi {{ subject }}, kemudian dalam kode Anda, Anda menetapkan data.subject menjadi "[TEST] My Email Subject" .

Apakah itu berhasil untuk Anda?

Salam hangat,

Elmer

Terima kasih atas balasannya @thinkingserious dan saran Anda!

Meskipun ini menyelesaikan pekerjaan (dan merupakan solusi yang kami gunakan saat ini), saya lebih suka dapat mengatur subjek sebagai bagian dari badan panggilan API kami. Apakah Anda dapat mengonfirmasi bahwa sebenarnya subjek yang disediakan untuk API dibuang dan informasi tersebut hilang dari dokumentasi API?

Halo @10kc-zack,

Saya percaya pada templat transaksional Anda akan menetapkan subjek menjadi {{ subject }}, kemudian dalam kode Anda, Anda menetapkan data.subject menjadi "[TEST] My Email Subject" .

Apakah itu berhasil untuk Anda?

Salam hangat,

Elmer

Seperti yang dinyatakan @10kc-zack, solusi ini berhasil, tetapi saya juga memperhatikan bahwa templat mengubah beberapa karakter seperti ' apostrofi.. yaitu "Seseorang" ke entitas html. Email saya tiba dengan subjek Someone's

Saya mengalami kesulitan mengatur baris subjek menggunakan metode paket SendMail Nuget. Ini kode saya, yang saya coba perbarui menggunakan info di atas:

    public async Task SendAsyncTemplate(string FromAddress, string FromName, string ToAddress, string ToName, string Subject, string LinkText, string LinkUrl)
    {
        _logger.LogInformation($"Sending mail to: {ToAddress}, with subject: {Subject}");

        var apiKey = _sendGridOptions.SendGridAPI;
        var client = new SendGridClient(apiKey);

        var from = new EmailAddress(FromAddress, FromName);
        var to = new EmailAddress(ToAddress, ToName);
        var msg = new SendGridMessage();
        var templateData = new ExampleTemplateData
        {
            Subject = Subject,
            Name = ToName,
            LinkText = LinkText,
            LinkUrl = LinkUrl
        };
        msg.Subject = "{{subject}}";
        msg.SetFrom(from);
        msg.AddTo(to);
        msg.AddCc(from);
        msg.SetTemplateId("supersecret");
        msg.SetTemplateData(templateData);

        var response = await client.SendEmailAsync(msg);

        _logger.LogInformation($"SendGrid Response Status Code: {response.StatusCode}");
    }
    private class ExampleTemplateData
    {
        [JsonProperty("subject")]
        public string Subject { get; set; }

        [JsonProperty("name")]
        public string Name { get; set; }

        [JsonProperty("linkText")]
        public string LinkText { get; set; }
        [JsonProperty("linkUrl")]
        public string LinkUrl { get; set; }
    }

Saya telah menjalankan dalam mode debugging dan nilai-nilai diatur dengan benar. Apa yang saya dapatkan sebagai baris subjek adalah tanda hubung. Ada ide?

Doh! Saya menemukan di mana {{subject}} perlu disetel. Jika ada orang lain yang mengalami masalah ini, masuk untuk mengedit template Anda, lalu klik "Pengaturan" di sebelah kiri. Akan ada ruang untuk memasukkan Subjek Anda. Masukkan {{subjek}} di sini.

@smschick ,

Dalam kasus Anda, Anda akan melakukan {{{ subject }}} .

@10kc-zack,

Saya memiliki permintaan terbuka untuk mengubah dokumentasi. Saya berasumsi Anda mengacu pada dokumentasi ini , benar?

Salam hangat,

Elmer

@thinkingserious Itu memang dokumentasi yang saya maksud :+1:

apakah ada rencana untuk dapat mengatur subjek melalui API tanpa menggunakan dynamic_template_data ?

Ya, agak membingungkan bahwa Anda tidak dapat meneruskan subjek melalui personalisasi saat menggunakan data templat dinamis, Anda harus meneruskannya dalam data yang tampaknya.

@mou01 Contoh sederhana di sini untuk cara mengatur subjek: https://github.com/sendgrid/sendgrid-nodejs/blob/master/docs/use-cases/single-email-single-recipient.md

apakah ini bekerja dengan template dinamis?

Saya rasa tidak, saya pikir ide di balik template dinamis adalah Anda mengatur subjek dalam pengaturan template, dan Anda bisa menggunakan data dinamis dalam subjek. Imbalannya adalah Anda harus meneruskannya dalam data dinamis jika Anda ingin sepenuhnya fleksibel.

jika ada yang mengalami masalah ini:
buka template Anda dan klik "Pengaturan" dengan ikon roda gigi dan letakkan ini di bidang subjek {{subject}}
dan akhirnya saat mengirim payload Anda " dynamic_template_data " harus memiliki nilai subjek.
"dynamic_template_data":{ "subject": "My Subject Value here" }

Menutup masalah ini karena dokumen berubah bukanlah sesuatu yang dapat diperbaiki dalam repo ini. Saya telah mengirimkan permintaan ke tim dokumen (judul referensi: _Updates to mail-send template_id description_) dan akan kembali ke sini dengan pembaruan apa pun.

Dokumen telah diperbarui.

Terima kasih @childish-sambino

Kurung rangkap tiga masih berfungsi, apakah itu masih merupakan solusi resmi?
Terima kasih!

image

@tcukanoot Ya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

agostonbonomi picture agostonbonomi  ·  3Komentar

metalshan picture metalshan  ·  3Komentar

amlcodes picture amlcodes  ·  4Komentar

murphman300 picture murphman300  ·  4Komentar

prasoonjalan picture prasoonjalan  ·  3Komentar