Sendgrid-nodejs: Contoh yang mudah dimengerti

Dibuat pada 28 Jun 2016  ·  75Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Halo,

Akan sangat bagus untuk memberikan contoh yang mudah dipahami pada readme Anda, sesuatu yang sederhana seperti https://sendgrid.com/blog/migrating-app-sendgrids-template-engine/ misalnya, karena tbh jika saya ingin menulis 30 baris kode javascript untuk mengirim email sederhana Saya tidak akan menggunakan sendgrid.

Perpustakaan Anda cukup menjengkelkan untuk digunakan, bahkan untuk pengembang berpengalaman.

Bersulang,
dan maaf atas kata-kata kasar yang marah ini

ps: contoh ini persis seperti yang saya cari https://sendgrid.com/docs/Integrate/Code_Examples/v2_Mail/nodejs.html , sangat mudah digunakan

help wanted community enhancement

Komentar yang paling membantu

@thinkingserious Saya akhirnya memahami apa yang sangat mengganggu saya tentang semua kelas pembantu Sendgrid yang diperkenalkan di v3 ... ada terlalu banyak dari mereka dan mereka membuat pengiriman email menjadi tidak perlu rumit: P

Saya tidak ingin merombak semua kode Sendgrid, jadi saya memutuskan untuk membuat pembungkus sederhana, sendgrid-mailer .

Meskipun class helper Sendgrid berguna di balik layar, untuk membuat dan memvalidasi model email, menurut saya kelas tersebut tidak harus dipaksakan kepada kita hanya untuk berinteraksi dengan API. Saya merasa menulis aplikasi Node lebih rumit dari yang seharusnya, dan penamaan pembantu bisa sangat membingungkan, misalnya Mail vs Email .

Saya pikir contoh dasar menggambarkan masalah dengan baik:

https://github.com/sendgrid/sendgrid-nodejs#with -mail-helper-class

Ini sepertinya terlalu berbelit-belit untuk sesuatu yang mendasar seperti "Saya ingin mengirim email". Ini mengharuskan Anda memuat 8 dependensi berbeda dan menulis 15 baris kode sebelum Anda dapat mengirim email.

Tidak menggunakan kelas helper bisa dibilang lebih buruk, karena Anda harus mengetahui struktur yang diperlukan dari permintaan JSON email dan mengisinya sendiri dengan benar. Satu kesalahan akan merusak permintaan dengan mudah.

Jadi saya mengabstraksi semua logika kelas helper di belakang pembantu API yang sederhana dan mudah digunakan, sehingga mengirim email dengan Sendgrid menjadi mudah dan menyenangkan lagi :)

Contoh paling dasar menjadi:

//Load mailer and set API key (only needed once)
const mailer = require('sendgrid-mailer').config(API_KEY);

//Create email data 
const email = {
  to: '[email protected]',
  from: 'Someone <[email protected]>',
  subject: 'Hello world',
  text: 'Hello plain world!',
  html: '<p>Hello HTML world!</p>',
};

//Send away 
mailer.send(email); //Returns promise 

Permintaan dibuat di belakang layar dan menggunakan pembantu Sendgrid secara transparan.

Ini juga mendukung pengiriman banyak email, mengekspos objek Sendgrid jika diperlukan penyesuaian lebih lanjut, menerima instance Sendgrid Mail juga, dan menerima berbagai macam format untuk bidang ke / dari, misalnya Name <[email protected]> atau objek dengan properti nama / email. Lihat README untuk lebih jelasnya.

Mungkin masih ada ruang untuk perbaikan, tetapi saya ingin membagikan solusi ini di sini untuk orang-orang yang ingin menggunakan Sendgrid API tanpa kewalahan olehnya.

Semoga berguna bagi seseorang, dan mungkin ini dapat memberikan beberapa arahan untuk masa depan perpustakaan ini, dalam mengekspos API yang lebih sederhana :)

cc @julesbou agak terlambat, tapi saya harap Anda masih dapat menemukan kegunaannya.

Semua 75 komentar

Halo @julesbou ,

Kata-kata kasar tidak masalah bagi saya, terutama jika ada solusi yang dilampirkan :)

Terima kasih telah meluangkan waktu untuk memberi tahu kami.

Kami sedang merencanakan peningkatan untuk iterasi berikutnya, jadi Anda memiliki waktu yang tepat!

Jika Anda memiliki permintaan khusus lainnya, beri tahu kami di utas ini atau buka masalah tambahan.

Terima kasih!

Bagaimana kita menggunakan kelas helper? Yang ingin saya lakukan hanyalah menyetel dari nama ??

@tokopedia ,

Cara termudah adalah: https://github.com/sendgrid/sendgrid-nodejs#hello -email, khususnya: https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/helpers/mail/example. js # L4

Anda juga dapat membuat json Anda sendiri sebagai berikut: https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/mail/mail.js#L31 (berikut adalah ikhtisar json: https: / /sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html)

Terima kasih!

Sangat membantu! Ini harus di readme !!

@jsgandalf @thinkingserious Saya juga merasa perpustakaan ini cukup frustasi untuk digunakan. Saya mencoba mengirim email template. Saya menemukan contoh di sini tidak terlalu membantu. Saya bingung bagaimana cara menyetel alamat email "ke" dan "dari", dan kode ini bahkan tidak mengirim email saya. Saya sudah menggaruk-garuk kepala selama tiga hari terakhir. Ada bantuan?

Terima kasih atas umpan baliknya @bcootner. Permintaan Anda membantu memperbaiki antrean ini. Ini adalah masalah yang sangat ingin saya selesaikan.

Sementara itu, semoga contoh ini dapat membantu:

var sg = require('sendgrid').SendGrid(process.env.SENDGRID_API_KEY)

function helloTemplate(){
  var helper = require('sendgrid').mail

  from_email = new helper.Email("[email protected]")
  to_email = new helper.Email("[email protected]")
  subject = "Hello World from the SendGrid Node.js Library"
  content = new helper.Content("text/plain", "some text here")
  mail = new helper.Mail(from_email, subject, to_email, content)
  // The constructor above already creates our personalization object
  // -name- and -card- are substitutions in my template
  substitution = new helper.Substitution("-name-", "Example User")
  mail.personalizations[0].addSubstitution(substitution)
  substitution = new helper.Substitution("-card-", "Denver")
  mail.personalizations[0].addSubstitution(substitution)
  mail.setTemplateId("YOUR_TEMPLATE_ID")
  return mail.toJSON()
}

function send(toSend){
  //console.log(JSON.stringify(toSend, null, 2))
  //console.log(JSON.stringify(toSend))

  var sg = require('sendgrid').SendGrid(process.env.SENDGRID_API_KEY)

  var requestBody = toSend
  var emptyRequest = require('sendgrid-rest').request
  var requestPost = JSON.parse(JSON.stringify(emptyRequest))
  requestPost.method = 'POST'
  requestPost.path = '/v3/mail/send'
  requestPost.body = requestBody
  sg.API(requestPost, function (response) {
    console.log(response.statusCode)
    console.log(response.body)
    console.log(response.headers)
  })
}

send(helloTemplate())

Harap hubungi jika Anda membutuhkan bantuan tambahan.

@thinkingserious Terima kasih atas waktu Anda dan tanggapan yang bijaksana. Saya memiliki kode berikut:

    var  sg = require('sendgrid').SendGrid("SG.**** .. ***6o");

    function welcomeTemplate() {
         console.log("template")
         var helper = require('sendgrid').mail
         from_email = new helper.Email("[email protected]")
         to_email = new helper.Email("[email protected]")
         subject = "Hello World from the SendGrid Node.js Library"
         content = new helper.Content("text/plain", "some text here")
         mail = new helper.Mail(from_email, subject, to_email, content)
         substitution = new helper.Substitution("-Name-", "bcootner")
         mail.personalizations[0].addSubstitution(substitution)
         mail.setTemplateId("5a****-*******-******-9")    //The ID of my Transactional Template
         return mail.toJSON()
}

function sendMail(toSend) {
     console.log("Send")
     var sg = require('sendgrid').SendGrid("SG.***....****o")
     var requestBody = toSend
     var emptyRequest = require('sendgrid-rest').request
     var requestPost = JSON.parse(JSON.stringify(emptyRequest))
     requestPost.method = 'POST'
     requestPost.path = '/v3/mail/send'
     requestPost.body = requestBody
     sg.API(requestPost, function (response) {
            console.log(response.statusCode)
            console.log(response.body)
            console.log(response.headers)
       })
}

Dan kemudian saya menyebut kode ini dengan sendMail(welcomeTemplate()) tetapi itu tidak berhasil. "Template" dan "send" muncul di log tetapi kode status, badan, atau header tidak muncul, tidak ada email yang diterima, dan tidak ada yang muncul di dasbor saya.

Setelah requestPost.body = requestBody bisakah Anda melakukan console.log(JSON.stringify(requestBody)) dan beri tahu saya apa yang Anda dapatkan.

@thinkingserious Setelah beberapa debugging sepertinya tidak ada yang dicetak ke log setelah baris var emptyRequest = require('sendgrid-rest').request . Pertama "template" akan dicatat, kemudian sekitar 5 menit kemudian "kirim" dicetak (dan jika saya menghapus komentar pada baris yang Anda komentari di fungsi kirim, itu berfungsi dengan baik). Apakah ada sesuatu yang saya lewatkan untuk pernyataan wajib ini, saya baru saja melakukan npm install sendgrid

Silakan coba ini:

A.Buat file bernama post.json dengan payload berikut:

{"content":[{"type":"text","value":"Hello, World!"}],"from":{"email":"[email protected]"},"personalizations":[{"subject":"Hello, World!","to":[{"email":"[email protected]"}]}]}

B. Ganti email contoh

C. Jalankan perintah berikut:

curl -X "POST" "https://api.sendgrid.com/v3/mail/send" \
        -H "Authorization: Bearer $SENDGRID_API_KEY"  \
        -H "Content-Type: application/json" \
        -d @post.json

D. Ganti $ SENDGRID_API_KEY dengan API KEY Anda, atau tambahkan Kunci API Anda ke variabel lingkungan yang disebut SENDGRID_API_KEY

@thinkingserious Saya menerima email tes itu, saya juga bisa mendapatkan Tes Hello berfungsi dengan baik, hanya saja templat ini tidak ingin berfungsi.

EDIT: Jadi saya mengganti var emptyRequest = require('sendgrid-rest').request dengan var emptyRequest = sg.emptyRequest() dan itu mengirim email, tidak ada format apapun dari desain template atau gambar apapun.

@tokopedia ,

Sayangnya, saya tidak dapat mereproduksi kesalahan Anda, jadi saya mencoba membantu mengatasi masalah yang mungkin timbul. Karena Anda dapat mengirim email melalui curl, itu berarti kunci API Anda bagus. Mungkin ID Kerangka bermasalah?

Jika Anda menghapus mail.setTemplateId("5a****-*******-******-9") apakah email akan terkirim?

@thinkingserious Jadi jika saya menghapus setTemplateID itu mengirimkan tes "Hello World dari SendGrid Node.js Library".

Saya tidak yakin apakah Anda melihat hasil edit saya, tetapi dengan mengganti var emptyRequest = require('sendgrid-rest').request dengan var emptyRequest = sg.emptyRequest() teks dari template saya tidak terkirim, tetapi tidak ada pemformatan (tidak ada font, tidak ada gambar). Saya mendapatkan hasil cetak berikut sekarang dari konsol.

2016-07-13T00:01:07.514157+00:00 app[web.1]:   date: 'Wed, 13 Jul 2016 00:01:07 GMT',
2016-07-13T00:01:07.514159+00:00 app[web.1]:   connection: 'close',
2016-07-13T00:01:07.514157+00:00 app[web.1]:   date: 'Wed, 13 Jul 2016 00:01:07 GMT',
2016-07-13T00:01:07.514158+00:00 app[web.1]:   'content-type': 'text/plain; charset=utf-8',
2016-07-13T00:01:07.502390+00:00 app[web.1]: 202
2016-07-13T00:01:07.502454+00:00 app[web.1]: 
2016-07-13T00:01:07.514155+00:00 app[web.1]: { server: 'nginx',
2016-07-13T00:01:07.514159+00:00 app[web.1]:   connection: 'close',
2016-07-13T00:01:07.514161+00:00 app[web.1]:   'x-frame-options': 'DENY' }

Sesuatu membuat saya berpikir itu masalah dengan 'teks / biasa', tapi saya tidak yakin. Terima kasih lagi!

Hai @bcootner , saya baru saja mengalami masalah yang sama dan telah menggaruk-garuk kepala selama beberapa jam, tetapi berhasil menyelesaikannya. Rasanya ada terlalu banyak hal yang tidak perlu yang diperlukan sebelum Anda benar-benar dapat mengirim email, tetapi inilah fungsi pembantu saya untuk melakukannya:

_Params_

  • dari (misalnya '[email protected]')
  • ke (mis. '[email protected]')
  • subjek (mis. 'subjek tes')
  • pesan (mis. 'pesan uji')
  • template (id template yang ingin Anda gunakan)
  • templateVariables (objek, di mana key - variabel dalam email, nilai - nilai untuk menggantikannya) { ":name": "someName", ":email": "someEmail" } . Perhatikan bahwa :email dan :name adalah cara saya mengatur variabel saya di template email, bisa jadi -email- atau apa pun yang Anda miliki
  • panggilan balik sukses
  • kesalahan panggilan balik
    let sendTemplateMail =  (from, to, subject, message, template, templateVariables, successCallback, errorCallback) => {
        var sg = require('sendgrid').SendGrid(process.env.SENDGRID_API_KEY),
            helper = require('sendgrid').mail,
            content_text = new helper.Content("text/plain", message),
            content_html = new helper.Content("text/html", message),
            request = sg.emptyRequest(),
            email_to = new helper.Email(to),
            email_from = new helper.Email(from),
            mail = new helper.Mail(email_from, subject, email_to, content_text),
            personalization = new helper.Personalization();

        personalization.addTo(email_to);
        personalization.setSubject(subject);

        mail.setTemplateId(template);
        mail.addContent(content_html);

        for(var key in templateVariables) {
            if(templateVariables.hasOwnProperty(key)) {
                var substitution = new helper.Substitution(key, templateVariables[key]);
                personalization.addSubstitution(substitution);
            }
        }

        mail.addPersonalization(personalization);

        request.method = 'POST';
        request.path = '/v3/mail/send';
        request.body = mail.toJSON();

        sg.API(request, (json) => {
            if(json.statusCode >= 300) {
                errorCallback(json);
            } else {
                successCallback(json);
            }
        });
    }

Dokumentasi memang membutuhkan beberapa refactoring, dengan contoh dasar dan sederhana. Semoga fungsi saya akan membantu Anda :)

@ByEmke terima kasih atas dukungan Anda! Bisakah Anda mengirim email kepada kami di [email protected] dengan

Berkenaan dengan dokumentasi, refactor sedang dalam perjalanan serta untuk mail helper itu sendiri. Kami telah mengumpulkan semua umpan balik Anda dan sangat senang dengan iterasi berikutnya.

Juga, kebingungan besar adalah Anda masih perlu mengatur konten saat menggunakan template. Untungnya, itu akan segera berubah (hari).

@botner Saya pikir Anda berhasil. Anda membutuhkan content_html = new helper.Content("text/html", message) . Untungnya, persyaratan ini akan hilang dalam beberapa hari, tim kami sedang mengubah perilaku ini sehingga saat Anda menentukan template, Anda tidak perlu lagi menyetel konten.

@ByEmke @thinkingserious terima kasih atas bantuan Anda dalam masalah ini, saya berhasil membuatnya bekerja dengan kode berikut tadi malam:

 var sg = require('sendgrid').SendGrid("SendGrid API Key" or <environment variable>)

function sendEmail(tempID){
    var helper = require('sendgrid').mail;
    from_email = new helper.Email("[email protected]")
    to_email = new helper.Email("[email protected]")
    subject = "Dummy Subject"
    content = new helper.Content("text/html", "dummy content")
    mail = new helper.Mail(from_email, subject, to_email, content)

    substitution = new helper.Substitution("-name-", "User's Name")
    mail.personalizations[0].addSubstitution(substitution)
    mail.setTemplateId(tempID)
    var requestBody = mail.toJSON()
    var requestPost = JSON.parse(JSON.stringify(sg.emptyRequest()))
    requestPost.method = 'POST'
    requestPost.path = '/v3/mail/send'
    requestPost.body = requestBody
    sg.API(requestPost, function (response) {
       console.log(response.statusCode)
       console.log(response.body)
       console.log(response.headers)
  })
}

Terima kasih lagi!

Saya juga merasa bahwa dokumennya cukup sulit untuk diikuti, terutama saat menggunakan template dan beberapa fitur lainnya.

Saya lebih suka sintaks request.body = {} daripada sintaks helper () karena ini membuat semuanya lebih bertele-tele dan kurang mudah dibaca (setidaknya bagi saya).

Saya menghabiskan cukup banyak waktu untuk memeriksa dokumen, menguji perubahan, melihat contoh Anda dan mencoba lagi hanya untuk datang ke sini dan menemukan bahwa Anda _do_ perlu menyetel konten saat menggunakan template meskipun dokumen menyatakan sebaliknya. Argh. Hal-hal seperti ini bisa membuat Anda gila. Pokoknya pujian untuk @ByEmke karena memberikan contoh yang berfungsi.

@peterkuiper (atau haruskah saya mengatakan Adam :))

Terima kasih atas umpan baliknya, kami sangat tertarik dengan cara membuat dokumen perpustakaan menjadi lebih baik.

Untuk lebih jelasnya, apakah Anda mengacu pada ini? https://github.com/sendgrid/sendgrid-nodejs/blob/master/USAGE.md

Berkenaan dengan masalah konten (kami mendengar kalian semua :)), ini hampir diperbaiki. Kami akan menerapkan rilis ke API yang tidak memerlukan konten untuk disetel saat menggunakan template. Kami berharap perubahan itu akan membuat pengalaman template jauh lebih baik.

@thinkingserious Saya sedang memeriksa dokumen di sendgrid.com (yaitu https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html) sementara saya seharusnya langsung ke Github. Saya berhemat melalui README dari repo ini, memeriksa contoh dan benar-benar melewatkan USAGE.md (saya buruk). File USAGE.md harus menjadi salah satu yang harus diletakkan di sendgrid.com karena memiliki format yang saya sukai :) Masih tidak yakin tentang beberapa praktik terbaik saat menggunakan template tetapi saya harap saya bisa mengetahuinya sendiri atau menemukannya di dokumen.

Saya sedang menjelajahi file itu dan baru saja menemukan contoh acak dari sesuatu yang menurut saya membingungkan:

var request = sg.emptyRequest()
request.queryParams["start_time"] = '1'
request.queryParams["limit"] = '1'
request.queryParams["end_time"] = '1'
request.queryParams["offset"] = '1'
request.method = 'GET'
request.path = '/v3/suppression/blocks'
sg.API(request, function (response) {
    console.log(response.statusCode)
    console.log(response.body)
    console.log(response.headers)
  })

Apa jenis start_time, limit, end_time dan offset dan apa artinya? Apakah ada lebih banyak queryParams? Dan mengapa tidak request.body?

Ada tautan ke Panduan Pengguna (yang tidak membantu sama sekali) sementara seharusnya ada tautan ke dokumen API yang menjelaskan hal-hal https://sendgrid.com/docs/API_Reference/Web_API_v3/blocks.html.

Jadi, Anda harus bolak-balik mencoba mencari tahu di mana menemukan informasi yang Anda butuhkan.

Umpan balik yang sangat baik @peterkuiper!

Aku juga ingin membujukmu. Silakan kirim ukuran T-shirt dan alamat surat Anda ke [email protected].

Kami akan memperbarui dokumen USAGE.md untuk menyertakan deskripsi dari kueri dan badan respons.

Mengenai template, rencananya ada untuk membuat helper seperti yang kami lakukan untuk titik akhir email, lengkap dengan contoh kasus penggunaan umum. Juga, ada perbaikan yang datang di mana Anda tidak perlu menentukan konten saat menggunakan template. Itu adalah sumber kebingungan yang besar.

@thinkingserious keren, terima kasih :) email terkirim!

Sementara saya melakukannya, saya melihat sesuatu yang lain yang juga mengacu pada praktik terbaik (dan menyebabkan kebingungan bagi tim saya). Salah satu rekan tim saya membuat template untuk beberapa fitur (misalnya verifikasi email) dan menambahkan verifikasi-nl, verifikasi-en dll. Jadi setiap template pada dasarnya sama dengan satu-satunya perbedaan adalah teksnya (bahasa yang berbeda). Saya telah melihat <% subject%> en <% body%> dan tidak dapat menemukan referensi untuk itu (TL; DR dari bagian saya mungkin) jadi saya berasumsi ini adalah substitusi internal di pihak Anda yang terjadi saat menggunakan API.

Saya ingin tahu seperti apa praktik "normal" itu:

  • Buat template untuk setiap fitur dalam bahasa yang berbeda dan hanya lakukan beberapa penggantian kecil (yaitu nama)

Tampaknya menggunakan pendekatan ini dapat menyebabkan banyak pekerjaan saat Anda mengubah bagian template Anda. Tidak yakin apakah Anda dapat membuat "template template" (mis. Header / footer / bagian apa pun). Selain itu, batas 300 templat dapat dengan mudah dicapai bila Anda memiliki banyak bahasa berbeda (ini bukan masalah dalam kasus kami).

  • Buat template untuk setiap fitur dan gunakan <% body%> untuk menyetel body dari aplikasi Anda dan hanya memiliki satu template "master" (atau gunakan sub tag Anda)

Semoga pertanyaannya masuk akal :)

@peteriper

Saya tidak tahu, tapi saya telah mengeluarkan beberapa antena. Saya akan menanggapi dengan apa yang saya temukan. Terima kasih!

@thinkingserious Saya akhirnya menggunakan versi 2.0.0 yang saya sangat suka cara kerjanya:

var client = require("sendgrid")("key");

client.send({
  to: "[email protected]",
  from: "[email protected]",
  subject: "subject",
  text:  "hello"
  // Or using the html property:
  // html: "Hello <strong>World!</strong>!"
}, fn);

Saya ingin melihat bagaimana ini akan terlihat di versi 3.x.x . Saya menemukan contoh saat ini sangat membingungkan.

Umpan balik yang bagus @IonicaBizau!

Kami pasti akan mempertimbangkan pemikiran Anda untuk iterasi berikutnya.

@thinkingserious Hebat! Namun, saya ingin tahu bagaimana ini akan terlihat di 3.x.x .

Tidak ada pemetaan satu-ke-satu karena klien ini dibuat ulang dari awal untuk memisahkan dari titik akhir email v2 dan mengizinkan akses ke titik akhir v3.

Meskipun demikian, tujuan mail helper adalah mencapai titik di mana panggilan bisa semudah dengan v2. Kami belum sampai di sana, kami kembali ke awal dan menantikan lebih banyak lagi iterasi.

@thinkingserious Saya memang melihat itu, tetapi saya tidak suka poin-poin berikut:

  1. Ini membingungkan karena ada variabel global (dideklarasikan tanpa var atau let atau kata kunci serupa). Misalnya: from_email = new helper.Email("[email protected]") bukan var from_email = ...
  2. Menggunakan new helper.Email hanya untuk sumber email sangat tidak ramah. Ini mungkin bisa dibungkus dalam fungsionalitas tingkat rendah di dalam modul. Hal yang sama untuk Content , Mail dll.
  3. Menyetel secara manual method , path dan body sekali lagi tidak bersahabat.
  4. Fungsi panggilan balik harus dalam format err, data, ... (bukan respon).

Singkatnya, IMHO, _quick start_ adalah implementasi tingkat rendah untuk mengirim email. Ini bisa berguna untuk fungsionalitas yang lebih dalam, tetapi jelas tidak untuk _quick start_. 😁


Terima kasih banyak atas layanan dan modul yang luar biasa. ✨

@Bayu_joo

Umpan balik yang luar biasa, terima kasih!

Kami pasti akan mengacu pada pemikiran Anda saat kami membuat iterasi berikutnya dari mail helper.

Anda benar, versi pertama ini adalah pembungkus tipis di atas API. Rencananya adalah meningkatkan fungsionalitasnya secara bertahap berdasarkan umpan balik komunitas, seperti yang telah Anda lakukan!

Atas dukungan dan kontribusi Anda kepada komunitas, kami ingin mengirimkan beberapa barang curian. Silakan kirim email kepada kami ke [email protected] dengan ukuran T-shirt dan alamat surat Anda.

Silakan menambahkan umpan balik tambahan sesuai keinginan Anda. Terima kasih lagi!

@Bayu_joo

Anda juga dapat melakukan sesuatu seperti ini:

var sg = require('sendgrid').SendGrid('API_KEY');
var request = sg.emptyRequest()

request.body = {
  "content": [
    {
      "type": "text/html",
      "value": "<html><p>Hello, world!</p></html>"
    }
  ],
  "from": {
    "email": "[email protected]",
    "name": "My Name"
  },
  "personalizations": [
    {
      "to": [
        {
          "email": "[email protected]",
          "name": "John Doe"
        }
      ]
    }
  ],
  "template_id": "TEMPLATE_ID",
};

request.method = 'POST'
request.path = '/v3/mail/send'
sg.API(request, function (response) {
  console.log(response.statusCode)
  console.log(response.body)
  console.log(response.headers)
});

Saya lebih suka sintaks ini daripada sintaks helper. Lihatlah contohnya, mereka cukup membantu saya.

https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/mail/mail.js

HTH

@wowowow ! Pasti akan melakukannya. Terima kasih — senang membantu! 😁

@peterkuiper Saya mencobanya juga, tetapi saya pikir saya melakukan kesalahan dengan mengganti text/html dengan html dan isinya muncul sebagai lampiran. Kemudian saya memutuskan untuk menurunkan versinya.

Tapi sekali lagi, ini masih terlihat level rendah ( request.method = ... , mengirimkan tipe MIME dalam array content , response argumen di callback dll).

Terima kasih @peterkuiper!

Saya menambahkan gaya contoh itu ke README minggu lalu :)

@Bayu_joo

Ya, barang tingkat rendah itu akan segera disembunyikan.

@Serius senang mendengar bahwa barang permintaan akan segera disembunyikan 👍

Menindaklanjuti saran bagus dari @IonicaBizau , rekomendasi lainnya adalah menyembunyikan detail penerapan "personalisasi", jika memungkinkan. Misalnya, melakukan sesuatu seperti:

var sg = require('sendgrid').SendGrid('API_KEY');
sg.addTo(x);
sg.addBcc(email);
sg.addBcc(email);
sg.addHeader(header);

Sepertinya tidak perlu untuk mengekspos tingkat detail ini melalui SDK.

Selain itu, tidak yakin apakah ini sudah menjadi fitur, tetapi akan sangat bagus jika Anda dapat menyambung panggilan ini:

var sg = require('sendgrid').SendGrid('API_KEY');
sg.addTo(x)
  .addBcc(email)
  .addBcc(email)
  .addHeader(header)
  .send();

Terima kasih dan pertahankan kerja bagusnya 👍

@james_indonesia ,

Terima kasih atas masukan tambahannya!

Sampai kita dapat meningkatkan pembantu surat untuk mengaktifkan beberapa implementasi lagi bersembunyi, lihat permintaan tarik mengagumkan @adambuczynski : https://github.com/sendgrid/sendgrid-nodejs/pull/261. Ini tidak secara langsung membahas ide spesifik Anda, tetapi ini adalah langkah ke arah yang benar.

@thinkingserious Anda menyebutkan bahwa permintaan tingkat rendah akan segera disembunyikan, apakah kalian sudah merencanakan sesuatu untuk itu? Saya memikirkannya kemarin, dan meskipun senang memiliki akses ke seluruh API, Anda juga dapat menggunakan sendgrid-rest untuk itu. Dengan begitu, semua perpustakaan ini harus lakukan, adalah memungkinkan Anda untuk mengirim email, dan dengan demikian hanya mengekspos API pengiriman email.

Itu adalah Anda memisahkan masalah dan mempersempit fokus paket ini sedikit, memungkinkan API yang lebih bersih dengan rantai dll. Seperti yang disarankan

@bayu_joo ,

Rencana kami adalah mengeksekusi lapisan abstraksi melalui pembantu. Mail adalah yang pertama, tetapi dalam waktu dekat kami berencana menambahkan satu untuk manajemen subuser dan template. Tapi pertama-tama kita perlu memperbaiki mail helper dan menjadikannya standar.

Anda benar, pustaka ini hanyalah lapisan yang sangat tipis di atas sendgrid-rest dan hanya menambahkan contoh, file USAGE dan pengujian unit (ini semua otomatis [kami berharap untuk membuka sumber ini juga] menggunakan definisi Swagger kami). Jangka panjang, kami membayangkan mengimplementasikan kode pembantu untuk semua titik akhir, lengkap dengan validasi data dua arah, dengan inti dari fungsionalitas itu juga otomatis. Alur kerja dan kasus penggunaan akan dibuat dengan tangan.

Selama beberapa minggu / bulan ke depan kami akan mengekspos peta jalan di sini di GitHub untuk masukan lebih lanjut.

Selain itu, pada akhir Agustus kami akan menambahkan dukungan untuk Incoming Parse Webhook ke perpustakaan ini.

Terima kasih telah mengajukan pertanyaan ini dan semoga balasan saya memicu umpan balik lebih lanjut dari Anda dan komunitas. Kami ingin ini menjadi perpustakaan berbasis komunitas, didukung dan dipimpin oleh SendGrid.

Terima kasih atas pembaruan @thinkingserious. Saya akan dengan senang hati memainkan peran di perpustakaan sendgrid nodejs ke depannya.

Mengapa Anda menambahkan dukungan Parse pada tahap ini? Saya pikir layanan Parse akan dihentikan Januari depan.

@thinkingserious Saya lupa menyebutkan bahwa jika ada yang bisa saya bantu di sini, cukup ping saya. Saya akan senang meretas hal-hal jika saya bisa. :tersenyum:

@adambuczynski itu berita bagus! Juga, permintaan tarik Anda semakin mendekati puncak. Saya pikir saya akan bisa menggabungkannya lebih awal minggu depan.

Terkait Parse, kami belum memutuskan untuk menghentikannya secara resmi. Menambahkan dukungan di perpustakaan adalah bagian dari pengujian kami untuk menentukan apakah kami akan mempertahankannya atau tidak.

@Bayu_joo

Terima kasih! Dukungan Anda sangat kami hargai!

Adakah cara untuk menyetel lebih dari satu penerima menggunakan mail helper?
Saya perhatikan helper.Mail(from_email, subject, to_email, content) menggunakan personalization.addTo untuk menyetel penerima .. Saya yakin ini hanya berfungsi dengan 1 penerima, bukan serangkaian penerima (mungkin saya salah) dan helper tidak memberikan setTo function (cara ideal untuk mengatur tos).

Saya melihat bahwa jika saya menyetel personalisasi sendiri dengan let personalization = new helper.Personalization(); saya dapat melakukan personalization.tos = [email, email]//email=new helper.Email(email_address, name) apakah aman? Apakah kemungkinan akan berubah dalam rilis mendatang?

@ albert-the-creator saya menggunakannya sebagai berikut:

  //Helpers
  const Mail = sendgrid.mail.Mail;
  const Email = sendgrid.mail.Email;
  const Personalization = sendgrid.mail.Personalization;

  //Create new mail object
  let mail = new Mail();

  //Create recipients
  let recipients = new Personalization();
  recipients.addTo(new Email(data.to, data.toname));

  //Set recipients
  mail.addPersonalization(recipients);

Saya pikir Anda dapat menambahkan beberapa penerima dengan mengulangi baris recipients.addTo , misalnya dalam satu lingkaran.

Saya menemukan pendekatan ini cukup bertele-tele, dengan pemisahan menjadi kelas Email dan Personalisasi. Terkadang Anda hanya ingin menambahkan alamat email dan mengirimkannya, dan ini terasa seperti Anda membutuhkan banyak baris kode untuk melakukannya.

@ albert-the-creator,

Konstruktor itu dibuat untuk membantu orang mengirim satu email lebih mudah, pada dasarnya ini adalah fungsi "hello email".

Untuk beberapa email, Anda mungkin ingin mengikuti contoh ini (karena Anda telah memulai jalur ini dengan menyetel personalisasi sendiri): https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/helpers/mail /example.js#L15

Mungkin juga berguna untuk membaca tentang personalisasi: https://sendgrid.com/docs/Classroom/Send/v3_Mail_Send/personalizations.html

Helper pasti akan berevolusi, tetapi setiap perubahan yang melanggar akan ditandai dengan rilis poin utama. Saya tidak berharap API berubah banyak.

@bayu_joo ,

Terima kasih telah bergabung! Kita perlu memperbarui helper ke akun untuk kasus penggunaan umum tambahan seperti ini dan mengirim email dengan template misalnya.

@thinkingserious the helpers API adalah sesuatu yang saya juga tertarik untuk refactoring / tingkatkan ketika saya punya waktu lagi :)

@bayu_joo ,

Itu luar biasa, ketika Anda memutuskan untuk memulai itu, silakan ping saya. Atau jika kami memulainya sebelum Anda, saya akan mem-ping Anda.

Saya menggunakan kode oleh @bcootner dan berfungsi dengan baik. Namun akan sangat bagus untuk memiliki contoh yang tepat dan resmi tentang bagaimana menggunakan template dengan plugin node ini.

@tokopedia ,

Terima kasih atas tindak lanjutnya!

Saya sedang mengerjakan contoh itu minggu ini, Anda akan menemukannya tertaut di README.

Saya tidak menggunakan Template helper, tetapi saya akan membagikan pendekatan saya untuk memuat template HTML dan format teks serta parsial melalui metode helper load :

  /**
   * Load an email (both plain text and html)
   */
  load(email, data, req) {

    //Get filenames
    const PARTIAL_HTML = path.resolve('./app/components/' + email + '.html');
    const PARTIAL_TEXT = path.resolve('./app/components/' + email + '.txt');

    //Append some globals
    if (req) {
      Object.assign(data, {
        app: {
          title: req.app.locals.APP_TITLE,
          version: req.app.locals.APP_VERSION,
          url: req.app.locals.APP_BASE_URL,
        },
        date: {
          year: moment().format('YYYY'),
          date: moment().format('DD-MM-YYYY'),
        },
      });
    }

    //Return promise
    return Promise.all([
      Promise.all([
        readFile(TEMPLATE_TEXT, 'utf8'),
        readFile(PARTIAL_TEXT, 'utf8'),
      ]).spread((template, partial) => {
        return template.replace('{{partial}}', partial);
      }),
      Promise.all([
        readFile(TEMPLATE_HTML, 'utf8'),
        readFile(PARTIAL_HTML, 'utf8'),
      ]).spread((template, partial) => {
        return template.replace('{{partial}}', partial);
      }),
    ]).then(result => result.map(contents => replaceData(contents, data)));
  },

Ini kemudian dapat digunakan sebagai berikut untuk mendapatkan objek yang siap digunakan dengan Sendgrid:

  let email = mailer.load('user/emails/verify-email-address', data, req)
    .spread((text, html) => ({
      to: user.email,
      from: req.app.locals.EMAIL_IDENTITY_NOREPLY,
      subject: 'Verify your email address',
      text, html,
    }));

Anda dapat dengan mudah mengadaptasi contoh untuk menggunakan sesuatu seperti Handlebars template juga. Dalam contoh di atas, replaceData helper adalah fungsi sederhana yang menggantikan tag mirip setang dengan data yang disediakan.

Saya tidak yakin apakah ini relevan atau tidak, tetapi dengan TIDAK menggunakan "mail helper" saya menghemat banyak waktu. Ini setelah menjadi sangat frustrasi, saya sengaja menurunkan versi ke 2.0. Saya hanya menggunakan fungsi tipe pabrik untuk menghasilkan V3 JSON yang valid dan sekarang saya sangat senang dengan peningkatan di V3 API (karena saya benar-benar dapat menggunakannya sekarang).

Ini adalah sesuatu yang saya perjuangkan pada awalnya juga. saya pikir
pembantu mungkin bisa dibuat lebih efisien, dan lebih mudah digunakan. saya akan
bahkan berpendapat bahwa mungkin mereka seharusnya tidak menjadi bagian dari modul inti sendgrid,
untuk memisahkan masalah dan memungkinkan orang memilih untuk menggunakannya.

Saya akan melihat mereka lagi dan melihat apakah saya bisa menemukan beberapa yang konkret
saran.

Pada Jum, 26 Agustus 2016, 05:48 Sean Lindo [email protected] menulis:

Saya tidak yakin apakah ini sebagai contoh atau tidak, tetapi dengan TIDAK menggunakan "mail helper"
Saya menghemat waktu yang tak terukur. Ini setelah mendapatkan begitu
karena frustrasi, saya sengaja menurunkan versi ke 2.0.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/sendgrid/sendgrid-nodejs/issues/252#issuecomment -242479491,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/AAd8Qu5iRLFQwoKlRd2fP5oioT1uLqB6ks5qjdV2gaJpZM4JAiac
.

@annisa_dwi

Terima kasih telah meluangkan waktu untuk memberikan umpan balik!

Berikut adalah contoh penggunaan pustaka ini tanpa Mail Helper: https://github.com/sendgrid/sendgrid-nodejs#without -mail-helper-class

Mail Helper adalah versi pertama dan kami bergantung pada umpan balik seperti milik Anda untuk membantu kami meningkatkan versi berikutnya. Apakah Anda keberatan membagikan masalah spesifik yang Anda hadapi agar kami dapat membuat tiket untuk memperbaikinya?

Selain itu, saya menambahkan suara Anda ke tugas backlog kami untuk meningkatkan Mail Helper untuk membantu memindahkannya ke antrean. Terima kasih!

@bayu_joo ,

Saya melihat bahwa kehebatan Anda terus berlanjut :)

Saya menantikan tanggapan Anda, saya tahu itu akan bagus!

@bayu_joo

Kami telah memulai file USE_CASES.md tempat kami akan memberikan contoh untuk kasus penggunaan umum. Yang pertama adalah template transaksi :)

Saya menantikan tanggapan Anda, saya tahu itu akan bagus!

👻

@pinkingserious Tentu! Beri saya satu atau dua hari dan saya akan memberi Anda contoh konkret.

Ini adalah salah satu utas favorit saya di sini :)

Saya pikir umpan balik Anda akan sangat penting untuk iterasi berikutnya dari pustaka ini, yang kemungkinan akan menjadi perubahan besar. Jika Anda punya waktu, bisakah Anda melihat proposal kami? https://github.com/sendgrid/sendgrid-nodejs/issues/290

Terima kasih!

@thinkingserious Saya akhirnya memahami apa yang sangat mengganggu saya tentang semua kelas pembantu Sendgrid yang diperkenalkan di v3 ... ada terlalu banyak dari mereka dan mereka membuat pengiriman email menjadi tidak perlu rumit: P

Saya tidak ingin merombak semua kode Sendgrid, jadi saya memutuskan untuk membuat pembungkus sederhana, sendgrid-mailer .

Meskipun class helper Sendgrid berguna di balik layar, untuk membuat dan memvalidasi model email, menurut saya kelas tersebut tidak harus dipaksakan kepada kita hanya untuk berinteraksi dengan API. Saya merasa menulis aplikasi Node lebih rumit dari yang seharusnya, dan penamaan pembantu bisa sangat membingungkan, misalnya Mail vs Email .

Saya pikir contoh dasar menggambarkan masalah dengan baik:

https://github.com/sendgrid/sendgrid-nodejs#with -mail-helper-class

Ini sepertinya terlalu berbelit-belit untuk sesuatu yang mendasar seperti "Saya ingin mengirim email". Ini mengharuskan Anda memuat 8 dependensi berbeda dan menulis 15 baris kode sebelum Anda dapat mengirim email.

Tidak menggunakan kelas helper bisa dibilang lebih buruk, karena Anda harus mengetahui struktur yang diperlukan dari permintaan JSON email dan mengisinya sendiri dengan benar. Satu kesalahan akan merusak permintaan dengan mudah.

Jadi saya mengabstraksi semua logika kelas helper di belakang pembantu API yang sederhana dan mudah digunakan, sehingga mengirim email dengan Sendgrid menjadi mudah dan menyenangkan lagi :)

Contoh paling dasar menjadi:

//Load mailer and set API key (only needed once)
const mailer = require('sendgrid-mailer').config(API_KEY);

//Create email data 
const email = {
  to: '[email protected]',
  from: 'Someone <[email protected]>',
  subject: 'Hello world',
  text: 'Hello plain world!',
  html: '<p>Hello HTML world!</p>',
};

//Send away 
mailer.send(email); //Returns promise 

Permintaan dibuat di belakang layar dan menggunakan pembantu Sendgrid secara transparan.

Ini juga mendukung pengiriman banyak email, mengekspos objek Sendgrid jika diperlukan penyesuaian lebih lanjut, menerima instance Sendgrid Mail juga, dan menerima berbagai macam format untuk bidang ke / dari, misalnya Name <[email protected]> atau objek dengan properti nama / email. Lihat README untuk lebih jelasnya.

Mungkin masih ada ruang untuk perbaikan, tetapi saya ingin membagikan solusi ini di sini untuk orang-orang yang ingin menggunakan Sendgrid API tanpa kewalahan olehnya.

Semoga berguna bagi seseorang, dan mungkin ini dapat memberikan beberapa arahan untuk masa depan perpustakaan ini, dalam mengekspos API yang lebih sederhana :)

cc @julesbou agak terlambat, tapi saya harap Anda masih dapat menemukan kegunaannya.

@adamreisnz serius, terima kasih.

Pekerjaan latar belakang saya yang mengirim email melalui sendgrid menggunakan v4.0.7, yang sudah cukup rumit. Saya meningkatkan ke versi terbaru dan sayangnya semuanya rusak. Saya sangat frustrasi dengan betapa rumitnya mengirim email sehingga saya bahkan tidak repot-repot memperbaruinya.

Semua yang dikatakan, kesederhanaan ini persis seperti yang saya cari. Saya akan mencobanya di akhir pekan.

Bersulang!

@jamesdixon Saya masih terjebak di v3.xx dan juga tidak ingin meningkatkan :)

Semoga bermanfaat bagi Anda. Beri tahu saya cara kerjanya untuk Anda dan jika ada sesuatu yang penting hilang, terima kasih!

@jamur_kejang

Ini LUAR BIASA dan terima kasih telah membagikannya dengan komunitas kami :)

tldr; kelas pembantu kami belum selesai dan Anda sudah mengalahkan kami ke tempat yang kami tuju :)

Kami sangat setuju dengan pendapat Anda dan ini adalah fase pembaruan pustaka v3 yang saat ini kami kerjakan di 7 SDK kami. Silakan lihat proyek Mail Helper Enhancement di sini untuk detail lebih lanjut tentang proyek Node.js.

Saat ini, kami sedang menyelesaikan perpustakaan C #. Untuk mendapatkan contoh konkret dari apa yang kami rencanakan untuk perpustakaan Node.js ini, silakan lihat ini . Kami berharap untuk merilisnya dalam beberapa hari.

Jadi, saya punya proposal:

Maukah Anda menambahkan solusi Anda ke Mail Helper di sini (mirip dengan apa yang telah kami lakukan di C #)? Saya pikir pekerjaan Anda akan mencapai jangkauan yang lebih besar dalam kasus itu. Jika tidak, tidak masalah sama sekali. Karena Anda telah memposting proyek Anda di bawah lisensi MIT, saya berharap Anda akan memaafkan kami jika kami meminjam dari pekerjaan Anda yang baik sedikit;) Dan tentu saja, kami akan memastikan Anda mendapatkan kredit atas kontribusi Anda.

Jika Anda memutuskan untuk memisahkan pekerjaan Anda, dapatkah Anda menambahkan tautan di sini di bawah bagian Perpustakaan Komunitas?

Terima kasih atas dukungan Anda yang luar biasa. Kamu keren!

@thinkingserious senang mendengar Anda berpikir untuk menuju ke arah yang sama. Contoh C # terlihat lebih baik, tapi menurut saya masih agak berbelit-belit untuk implementasi JS. Membuat semua kelas tidak selalu merupakan cara terbaik untuk masuk di JS.

Adapun proposal Anda, karena saya masih menggunakan kelas helper di bawah tenda, saya tidak tahu seberapa banyak sebenarnya berguna untuk ditransfer ke perpustakaan resmi. Saya mungkin akan lebih cenderung untuk membantu dengan penulisan ulang utama (misalnya v5) dan mulai dari yang baru, mengambil masukan dari pengguna dan komunitas Node dan menghasilkan API mengagumkan yang mudah digunakan namun fleksibel jika diperlukan.

Tetapi jika sementara itu Anda ingin meminjam beberapa kode dari pembungkus saya untuk digunakan di perpustakaan resmi, silakan saja :) Saya akan menambahkan tautan ke pembungkus saya di halaman itu 🎉

Saya benar-benar berpikir bahwa mungkin ide yang baik untuk membagi proyek menjadi dua paket, satu tingkat yang lebih rendah yang menyertakan logika permintaan untuk berinteraksi dengan API, dan satu tingkat yang lebih tinggi hanya untuk mengirim email, mirip dengan yang saya buat.

Paket tingkat yang lebih rendah dapat digunakan untuk orang yang membutuhkan akses penuh ke API, sedangkan paket surat akan cocok untuk orang yang hanya ingin mengirim email. Dan tentu saja di balik terpal, mailer akan menggunakan paket API.

@thinkingserious apa pendapat Anda tentang itu?

@jamur_kejang

Terima kasih atas umpan baliknya yang bijaksana, seperti biasa.

Saya tidak yakin apakah kita perlu membagi proyek pada saat ini. Saya rasa kita bisa mencapai hasil yang sama dengan model helper saat ini. Karena itu, saya terbuka untuk menjelajahi arsitektur baru di versi mendatang dan saya ingin Anda ikut serta untuk itu.

Semoga beberapa orang lain di komunitas akan mempertimbangkannya.

Saya akan memikirkan lebih dalam tentang ini dan terlibat kembali ketika tiba saatnya untuk menerapkan Mail Helper yang diperbarui.

Sekali lagi terima kasih atas dukungan Anda dan telah menambahkan tautan ke dokumen kami!

Ini masalah memisahkan kekhawatiran. Anda dapat menyertakan helper / wrapper untuk memudahkan pengiriman di dalam perpustakaan utama, tetapi menurut saya itu mencampurkan dua masalah terpisah untuk kemungkinan kerugian atau komplikasi yang tidak perlu dari keduanya. Menjaga agar tetap terpisah akan memungkinkan konsumen untuk memilih perpustakaan yang mereka butuhkan (atau keduanya), dan mungkin akan membuat pengembangan kedua perpustakaan lebih mudah karena batasan yang ditentukan dengan jelas.

Saya pikir itu adalah sifat dari modul Node dan npm untuk memiliki sebanyak mungkin pemisahan perhatian, dan meminta setiap paket melakukan tugas tertentu (dan menjadi ahli dalam hal itu!). Itu adalah sesuatu yang harus saya biasakan juga ketika saya pertama kali memulai dengan Node, tetapi begitu saya melakukannya, saya menyukai kebebasan dan kemampuan untuk mengembangkan paket bersih dan sederhana yang disediakannya.

Nantikan komentar dari komunitas.

Nah, Anda pasti persuasif dengan argumen yang solid :)

Saya sangat menghargai Anda meluangkan waktu untuk menjelaskan.

Saya sudah menantikan untuk kembali mengerjakan pustaka ini dan sekarang Anda membuat saya sangat bersemangat untuk kembali mengerjakan SDK ini bersama Anda dan komunitas.

Bagus, beri tahu saya saat Anda akan mengerjakannya :)
Saya sedang cuti selama 4 minggu jadi itu berarti saya akhirnya punya waktu luang untuk mengerjakan beberapa proyek open source juga 🌴

@jamur_kejang

Selamat!

"Paket mailer" yang jauh lebih tinggi adalah yang kami inginkan. Hanya perlu mengirim beberapa email.

Dengan versi terakhir itu sangat sederhana, dan sekarang itu adalah kekacauan yang tidak suci. Contoh "Dasar" saat ini memiliki 8 vars yang ditentukan , membutuhkan konstruktor khusus. Kemunduran besar dalam hal kemudahan penggunaan.

Harus sesederhana itu

sendgrid.send({
  from: fromEmail,
  fromName: fromName,
  to: toEmail,
  subject: 'Hello'
  ...
})
.then(...)
.catch(...)
.finally(...)

Tidak ada dokumen yang dibutuhkan, hanya satu contoh yang dapat kita salin dan tempel dalam perjalanan. Itulah nilai utama SendGrid bagi tim kami, dan sayangnya sekarang sudah hilang.

@adamreisnz Tampak hebat; keputusan desain yang sangat jelas. Saya harap Anda termasuk dalam daftar gaji SendGrid!

@thinkingserious mohon pertimbangkan secara serius untuk mengarahkan dokumen utama ke proyek @adamreisnz , karena ini menyederhanakan semuanya secara signifikan, dan jika saya mengetahuinya lebih awal hari ini, itu akan menyelamatkan saya dari sakit kepala selama berjam-jam mencoba menggunakan apa yang imho adalah rekayasa berlebihan, Java- api terinspirasi di JS. Tolong beri pengguna Anda apa yang mereka inginkan, bukan apa yang menurut Anda mereka inginkan :-)

Juga, hanya untuk dicatat bahwa saya tidak akan terkejut jika pengembang lain mulai lebih sering berakhir di sini sekarang karena API V2 telah berakhir, dan akun baru akan dipaksa untuk menggunakan API V3. Secara pribadi, hal pertama yang saya coba adalah menggunakan nodemailer (yang transportasi sendgridnya masih berfungsi w / v2) yang masuk akal untuk lusinan proyek di masa lalu tetapi butuh waktu lama untuk bekerja kali ini. Jika saya harus menebak mengingat popularitas nodemailer di komunitas node, saya tidak akan menjadi satu-satunya orang yang akhirnya merasa seperti ini dalam beberapa bulan mendatang.

@ fisch0920 terima kasih atas umpan balik Anda, saya akan bekerja sama dengan @thinkingserious dalam beberapa minggu mendatang untuk meningkatkan API Sendgrid. Semoga kami akan menemukan sesuatu yang mudah digunakan tetapi masih cukup fleksibel saat dibutuhkan.

Halo semuanya,

Saya pikir Anda mungkin tertarik dengan desain ulang di Bantuan Email SendGrid Node.js: https://github.com/sendgrid/sendgrid-nodejs/pull/378

Tanggapan Anda akan sangat dihargai!

Salam hangat,

Elmer

Silakan pindah ke # 378 untuk pembaruan, terima kasih!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat