Sendgrid-nodejs: Leicht verständliches Beispiel

Erstellt am 28. Juni 2016  ·  75Kommentare  ·  Quelle: sendgrid/sendgrid-nodejs

Hallo,

Es wäre großartig, ein leicht verständliches Beispiel in Ihrer Readme-Datei bereitzustellen, etwas so Einfaches wie beispielsweise https://sendgrid.com/blog/migrating-app-sendgrids-template-engine/ , weil tbh, wenn ich 30 Zeilen schreiben wollte von Javascript-Code, um eine einfache E-Mail zu senden Ich würde sendgrid nicht verwenden.

Die Verwendung Ihrer Bibliothek ist selbst für erfahrene Entwickler ziemlich frustrierend.

Prost,
und entschuldigen Sie diese wütende Schimpfe

ps: Dieses Beispiel ist genau das, wonach ich suche: https://sendgrid.com/docs/Integrate/Code_Examples/v2_Mail/nodejs.html , so einfach zu bedienen

help wanted community enhancement

Hilfreichster Kommentar

@thinkingserious Endlich wurde mir

Ich wollte nicht den gesamten Code von Sendgrid überarbeiten, also habe ich beschlossen, stattdessen einen einfachen Wrapper zu erstellen ,

Obwohl die Hilfsklassen von Sendgrid hinter den Kulissen nützlich sind, um E-Mail-Modelle zu erstellen und zu validieren, sollten sie meiner Meinung nach nicht gezwungen werden, nur mit der API zu interagieren. Ich finde, das Schreiben von Node-Apps wird dadurch komplizierter als es sein sollte, und die Benennung der Helfer kann ziemlich verwirrend sein, z. B. Mail vs Email .

Ich denke, das grundlegende Beispiel veranschaulicht das Problem gut:

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

Dies scheint einfach viel zu kompliziert für etwas so Grundlegendes wie "Ich möchte eine E-Mail senden". Sie müssen 8 verschiedene Abhängigkeiten laden und 15 Codezeilen schreiben, bevor Sie eine E-Mail senden können.

Die Nichtverwendung der Hilfsklassen ist jedoch wahrscheinlich noch schlimmer, da Sie dann die erforderliche Struktur der E-Mail-JSON-Anforderung kennen und diese selbst korrekt ausfüllen müssen. Ein Fehler wird die Anfrage leicht brechen.

Also habe ich die gesamte Logik der Hilfsklassen hinter einem einfachen, benutzerfreundlichen API-Helfer abstrahiert, damit das Senden von E-Mails mit Sendgrid wieder einfach und unterhaltsam wird :)

Das grundlegendste Beispiel lautet:

//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 

Die Anfrage wird hinter den Kulissen erstellt und verwendet die Helfer von Sendgrid transparent.

Es unterstützt auch das Senden mehrerer E-Mails, macht das Sendgrid-Objekt verfügbar, falls weitere Anpassungen erforderlich sind, akzeptiert auch Sendgrid Mail -Instanzen und akzeptiert eine Vielzahl von Formaten für die An / Von-Felder, z. B. Name <[email protected]> oder ein Objekt mit Namen / E-Mail-Eigenschaften. Weitere Informationen finden Sie in der README-Datei .

Es gibt wahrscheinlich noch Verbesserungspotenzial, aber ich wollte diese Lösung hier für Leute freigeben, die die Sendgrid-API verwenden möchten, ohne von ihr überwältigt zu werden.

Hoffe, es ist nützlich für jemanden, und vielleicht kann es eine Richtung für die Zukunft dieser Bibliothek geben, indem es eine einfachere API verfügbar macht :)

cc @julesbou etwas spät, aber ich hoffe, Sie können noch eine Verwendung dafür finden.

Alle 75 Kommentare

Hallo @julesbou ,

Wütende Beschimpfungen sind in Ordnung mit mir, besonders wenn sie Lösungen haben :)

Vielen Dank, dass Sie sich die Zeit genommen haben, uns Bescheid zu geben.

Wir planen derzeit die Verbesserungen für die nächste Iteration, sodass Sie ein gutes Timing hatten!

Wenn Sie weitere spezielle Anfragen haben, teilen Sie uns dies bitte entweder in diesem Thread mit oder öffnen Sie weitere Fragen.

Vielen Dank!

Wie verwenden wir die Hilfsklasse? Alles was ich tun möchte ist den von Namen zu setzen?

@jsgandalf ,

Der einfachste Weg ist: https://github.com/sendgrid/sendgrid-nodejs#hello -email, insbesondere: https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/helpers/mail/example. js # L4

Sie können Ihren eigenen JSON auch wie folgt erstellen: https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/mail/mail.js#L31 (hier eine Übersicht über den JSON: https: / /sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html)

Vielen Dank!

Sehr hilfreich! Dies sollte auf der Readme sein !!

@jsgandalf @thinkingserious Auch ich finde die Bibliothek ziemlich frustrierend zu benutzen. Ich versuche, eine Vorlagen-E-Mail zu senden. Ich fand die Beispiele hier nicht sehr hilfreich. Ich bin verwirrt darüber, wie die E-Mail-Adressen "an" und "von" festgelegt werden sollen, und dieser Code sendet nicht einmal meine E-Mail. Ich habe mir in den letzten drei Tagen am Kopf gekratzt. Irgendeine Hilfe?

Danke für das Feedback @bcootner. Ihre Anfrage hilft dabei, dies in der Warteschlange zu beheben. Dies ist ein Problem, das ich gerne erledigen möchte.

In der Zwischenzeit hilft hoffentlich dieses Beispiel:

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())

Bitte wenden Sie sich an uns, wenn Sie zusätzliche Hilfe benötigen.

@thinkingserious Danke für

    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)
       })
}

Und dann rufe ich diesen Code mit sendMail(welcomeTemplate()) aber das funktioniert nicht. Die "Vorlage" und "Senden" werden in den Protokollen angezeigt, aber der Statuscode, der Text oder die Kopfzeilen werden nicht angezeigt, es werden keine E-Mails empfangen und in meinem Dashboard wird nichts angezeigt.

Nach requestPost.body = requestBody könnten Sie bitte console.log(JSON.stringify(requestBody)) und mich wissen lassen, was Sie bekommen.

@thinkingserious Nach einigem Debuggen scheint nach der Zeile var emptyRequest = require('sendgrid-rest').request nichts mehr im Protokoll gedruckt zu werden. Zuerst wird "Vorlage" protokolliert, dann etwa 5 Minuten später "Senden" gedruckt (und wenn ich die Zeilen, die Sie in der Sendefunktion kommentiert haben, auskommentiere, funktionieren diese einwandfrei). Gibt es etwas, das mir für diese Anforderung fehlt, ich habe gerade npm install sendgrid

Bitte versuchen Sie dies:

A. Erstellen Sie eine Datei mit dem Namen post.json mit den folgenden Nutzdaten:

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

B. Ersetzen Sie die Beispiel-E-Mails

C. Führen Sie den folgenden Befehl aus:

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. Ersetzen Sie entweder $ SENDGRID_API_KEY durch Ihren API-SCHLÜSSEL oder fügen Sie Ihren API-Schlüssel einer Umgebungsvariablen mit dem Namen SENDGRID_API_KEY hinzu

@thinkingserious Ich habe diese Test-E-Mail erhalten. Ich konnte auch den Hello Test zum Laufen bringen. Es ist nur so, dass diese Vorlagen nicht funktionieren sollen.

BEARBEITEN: Also habe ich var emptyRequest = require('sendgrid-rest').request durch var emptyRequest = sg.emptyRequest() und das sendet die E-Mail, es gibt einfach keine Formatierung aus dem Vorlagendesign oder irgendwelchen Bildern.

@bcootner ,

Leider kann ich Ihren Fehler nicht reproduzieren, daher versuche ich zu helfen, herauszufinden, wo ein Problem auftreten könnte. Da Sie eine E-Mail per Curl senden können, ist Ihr API-Schlüssel gut. Vielleicht hat die Vorlagen-ID ein Problem?

Wenn Sie mail.setTemplateId("5a****-*******-******-9") entfernen, wird die E-Mail gesendet?

@thinkingserious Wenn ich also die setTemplateID entferne, wird der Test "Hello World from the SendGrid Node.js Library" gesendet.

Ich bin nicht sicher, ob Sie meine Bearbeitung gesehen haben, aber durch Ersetzen von var emptyRequest = require('sendgrid-rest').request durch var emptyRequest = sg.emptyRequest() der Text aus meiner Vorlage gesendet, aber es gibt keine Formatierung (keine Schriftarten, keine Bilder). Ich bekomme jetzt den folgenden Ausdruck von der Konsole.

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' }

Etwas lässt mich denken, dass es ein Problem mit 'text / plain' ist, aber ich bin mir nicht sicher. Danke noch einmal!

Hey @bcootner , ich habe gerade das gleiche Problem erlebt und mich ein paar Stunden am Kopf gekratzt, aber es geschafft, es zu lösen. Es scheint, dass zu viel unnötiges Material benötigt wird, bevor Sie die E-Mail tatsächlich senden können, aber hier ist meine Hilfsfunktion, um dies zu tun:

_Params_

  • von (zB '[email protected]')
  • zu (zB '[email protected]')
  • Fach (zB 'Testperson')
  • Nachricht (zB 'Testnachricht')
  • Vorlage (Vorlagen-ID, die Sie verwenden möchten)
  • templateVariables (Objekt, wobei Schlüsselvariable in der E-Mail, Wert - Wert, durch den sie ersetzt werden soll) { ":name": "someName", ":email": "someEmail" } . Beachten Sie, dass mit :email und :name meine Variablen in der E-Mail-Vorlage festgelegt wurden. Es kann -email- oder was auch immer Sie haben
  • Erfolgsrückruf
  • Fehlerrückruf
    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);
            }
        });
    }

Die Dokumentation muss in der Tat überarbeitet werden, mit einfachen Beispielen. Hoffe meine Funktion wird dir helfen :)

@ ByEmke danke für deine Unterstützung! Könnten Sie uns bitte eine E-Mail an [email protected] mit Ihrer T-Shirt-Größe und Postanschrift

In Bezug auf die Dokumentation ist ein Refactor unterwegs, ebenso wie der Mail-Helfer selbst. Wir haben alle Ihre Rückmeldungen gesammelt und freuen uns auf die nächste Iteration.

Eine große Verwirrung ist auch, dass Sie den Inhalt immer noch festlegen müssen, wenn Sie eine Vorlage verwenden. Zum Glück wird sich das sehr bald (Tage) ändern.

@bcootner Ich denke du hast es geschafft. Sie benötigen content_html = new helper.Content("text/html", message) . Glücklicherweise verschwindet diese Anforderung in wenigen Tagen. Unser Team ändert derzeit dieses Verhalten, sodass Sie den Inhalt nicht mehr festlegen müssen, wenn Sie eine Vorlage angeben.

@ByEmke @thinkingserious Vielen Dank für Ihre Hilfe zu diesem Problem. Ich habe es letzte Nacht geschafft, es mit dem folgenden Code zum

 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)
  })
}

Danke noch einmal!

Ich habe auch das Gefühl, dass die Dokumente ziemlich schwer zu befolgen sind, insbesondere wenn Vorlagen und einige andere Funktionen verwendet werden.

Ich bevorzuge die Syntax request.body = {} gegenüber der Syntax helper (), da dies die Dinge ausführlicher und weniger leicht lesbar macht (zumindest für mich).

Ich habe einige Zeit damit verbracht, die Dokumente durchzugehen, Änderungen zu testen, Ihre Beispiele anzusehen und erneut zu versuchen, hierher zu kommen und herauszufinden, dass Sie bei der Verwendung von Vorlagen _do_ Inhalte festlegen müssen, obwohl in den Dokumenten etwas anderes angegeben ist. Argh. Solche Sachen können dich verrückt machen. Trotzdem ein @ByEmke für die Bereitstellung eines funktionierenden Beispiels.

@ Peterkuiper (oder sollte ich Adam sagen :))

Vielen Dank für das Feedback. Wir sind sehr daran interessiert, wie wir die Bibliotheksdokumente verbessern können.

Um klar zu sein, beziehen Sie sich auf diese? https://github.com/sendgrid/sendgrid-nodejs/blob/master/USAGE.md

In Bezug auf das Inhaltsproblem (wir haben euch alle gehört :)) ist dies fast behoben. Wir werden eine Version für die API bereitstellen, für die der Inhalt bei Verwendung einer Vorlage nicht festgelegt werden muss. Wir hoffen, dass durch Änderungen die Vorlagenerfahrung erheblich verbessert wird.

@thinkingserious Ich habe die Dokumente auf sendgrid.com (dh https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html) überprüft, während ich direkt zu Github hätte gehen sollen. Ich habe die README-Datei dieses Repos durchgesehen, mir die Beispiele angesehen und USAGE.md (mein schlechtes) total verpasst. Die USAGE.md-Datei sollte diejenige sein, die auf sendgrid.com abgelegt werden sollte, da sie mein bevorzugtes Format hat :) Ich bin mir immer noch nicht sicher über einige bewährte Methoden bei der Verwendung von Vorlagen, aber ich hoffe, ich kann das selbst herausfinden oder sie in der finden docs.

Ich habe diese Datei durchsucht und nur ein zufälliges Beispiel für etwas gefunden, das mich verwirrt:

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)
  })

Welche Typen sind start_time, limit, end_time und offset und was bedeuten diese? Gibt es mehr queryParams? Und warum ist es nicht request.body?

Es gibt einen Link zum Benutzerhandbuch (der überhaupt nicht hilft), während es einen Link zu den API-Dokumenten geben sollte, der die Dinge klärt https://sendgrid.com/docs/API_Reference/Web_API_v3/blocks.html.

Sie müssen also hin und her gehen und herausfinden, wo Sie die benötigten Informationen finden.

Exzellentes Feedback @peterkuiper!

Ich würde dich auch gerne rausschmeißen. Bitte senden Sie uns Ihre T-Shirt-Größe und Postanschrift an [email protected].

Wir werden die USAGE.md-Dokumente aktualisieren, um Beschreibungen der Abfrage- und Antwortkörper zu enthalten.

In Bezug auf Vorlagen ist geplant, einen Helfer wie für den E-Mail-Endpunkt zu erstellen, der Beispiele für häufig verwendete Anwendungsfälle enthält. Es gibt auch einen Fix, bei dem Sie den Inhalt bei der Verwendung von Vorlagen nicht angeben müssen. Das ist eine große Quelle der Verwirrung.

@thinkingserious cool, danke :) E-Mail gesendet!

Während ich dabei bin, habe ich etwas anderes bemerkt, das sich auch auf Best Practices bezieht (und für mein Team Verwirrung stiftet). Einer meiner Teamkollegen erstellte Vorlagen für einige Funktionen (z. B. E-Mail überprüfen) und fügte Verifizieren-nl, Verifizieren-en usw. hinzu. Daher war jede Vorlage im Grunde dieselbe, mit dem einzigen Unterschied, dass der Text (andere Sprache). Ich habe <% subject%> en <% body%> gesehen und konnte keinen Verweis darauf finden (TL; DR von meiner Seite vielleicht), daher gehe ich davon aus, dass es sich um eine interne Substitution auf Ihrer Seite handelt, die bei Verwendung der API auftritt.

Ich bin gespannt, was eine "normale" Praxis sein könnte:

  • Erstellen Sie eine Vorlage für jedes Feature in einer anderen Sprache und nehmen Sie nur einige geringfügige Ersetzungen vor (z. B. Name).

Es scheint, dass die Verwendung dieses Ansatzes viel Arbeit verursachen kann, wenn Sie Teile Ihrer Vorlage ändern. Ich bin mir nicht sicher, ob Sie "Vorlagenvorlagen" erstellen können (z. B. Kopf- / Fußzeile / welcher Teil auch immer). Das Limit von 300 Vorlagen kann auch leicht erreicht werden, wenn Sie viele verschiedene Sprachen haben (dies ist in unserem Fall kein Problem).

  • Erstellen Sie eine Vorlage für jedes Feature und verwenden Sie <% body%>, um den Body aus Ihrer Anwendung festzulegen und nur eine "Master" -Vorlage zu haben (oder verwenden Sie Ihr On-Sub-Tag).

Hoffe die Frage macht Sinn :)

@ Peterkuiper ,

Ich weiß es nicht, aber ich habe einige Fühler ausgestreckt. Ich werde mit dem antworten, was ich entdecke. Vielen Dank!

@thinkingserious Am Ende 2.0.0 die mir sehr gut gefällt:

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);

Ich bin gespannt, wie das in Version 3.x.x aussehen würde. Ich finde die aktuellen Beispiele wirklich verwirrend.

Tolles Feedback @IonicaBizau!

Wir werden auf jeden Fall Ihre Gedanken für die nächste Iteration berücksichtigen.

@thinkingserious Großartig! Trotzdem würde ich gerne wissen, wie das in 3.x.x aussehen würde.

Es gibt keine Eins-zu-Eins-Zuordnung, da dieser Client von Grund auf neu erstellt wurde, um sich vom v2-Mail-Endpunkt zu entkoppeln und den Zugriff auf die v3-Endpunkte zu ermöglichen.

Der Zweck des Mail-Helfers besteht jedoch darin, einen Punkt zu erreichen, an dem der Anruf genauso einfach sein kann wie mit Version 2. Wir sind einfach noch nicht da, wir sind wieder am Anfang und freuen uns auf viele weitere Iterationen.

@thinkingserious Das habe ich gesehen, aber die folgenden Punkte gefallen mir nicht:

  1. Es ist verwirrend, weil es globale Variablen gibt (deklariert ohne var oder let oder ein ähnliches Schlüsselwort). Beispiel: from_email = new helper.Email("[email protected]") anstelle von var from_email = ...
  2. Die Verwendung von new helper.Email nur für eine E-Mail-Ressource ist sehr unfreundlich. Dies kann wahrscheinlich in eine untergeordnete Funktionalität innerhalb des Moduls eingeschlossen werden. Gleiches gilt für Content , Mail usw.
  3. Das manuelle Einstellen von method , path und body ist wieder ziemlich unfreundlich.
  4. Die Rückruffunktion sollte im Format err, data, ... (anstelle der Antwort) vorliegen.

Kurz gesagt, meiner Meinung nach ist der schnelle Start eine Implementierung auf niedriger Ebene zum Senden einer E-Mail. Es kann für tiefere Funktionen nützlich sein, aber definitiv nicht für einen schnellen Start. 😁


Vielen Dank für den tollen Service und das Modul. ✨

@IonicaBizau ,

Tolles Feedback, danke!

Wir werden uns auf jeden Fall auf Ihre Gedanken beziehen, wenn wir die nächste Iteration des Mail-Helfers erstellen.

Sie haben Recht, diese erste Version ist ein Thin Wrapper über die API. Der Plan ist, die Funktionalität basierend auf dem Feedback der Community schrittweise zu verbessern, so wie Sie es getan haben!

Für Ihre Unterstützung und Ihren Beitrag zur Community möchten wir Ihnen einen Swag schicken. Bitte senden Sie uns eine E- Mail mit Ihrer T-Shirt-Größe und Postanschrift an

Bitte zögern Sie nicht, nach Belieben zusätzliches Feedback hinzuzufügen. Danke noch einmal!

@ IonicaBizau

Sie können auch so etwas tun:

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)
});

Ich bevorzuge diese Syntax gegenüber der Hilfssyntax. Schauen Sie sich die Beispiele an, sie haben mir sehr geholfen.

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

HTH

@thinkingserious Wowowow! Wird auf jeden Fall tun. Danke - gerne helfen! 😁

@peterkuiper Ich habe das auch versucht, aber ich glaube, ich habe den Fehler gemacht, text/html durch html zu ersetzen, und der Inhalt wurde als Anhang angezeigt. Dann habe ich mich einfach entschlossen, die Version herunterzustufen.

Aber auch hier, das sieht immer noch Low-Level ( request.method = ... , das Senden von dem MIME - Typ in dem content array, response Argument in der Callback usw.).

Danke @peterkuiper!

Ich habe diesen Beispielstil letzte Woche zur README hinzugefügt :)

@IonicaBizau ,

Ja, das Low-Level-Zeug wird bald versteckt sein.

@thinkingserious froh zu hören, dass das Anforderungsmaterial bald versteckt wird 👍

Nach den großartigen Vorschlägen von @IonicaBizau wäre eine weitere Empfehlung, die Implementierungsdetails von "Personalisierungen" nach Möglichkeit zu verbergen. Zum Beispiel etwas tun wie:

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

Es erscheint lediglich unnötig, diese Detailebene über das SDK verfügbar zu machen.

Ich bin mir auch nicht sicher, ob dies bereits eine Funktion ist, aber es wäre großartig, diese Aufrufe verketten zu können:

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

Danke und weiter so 👍

@ Jamesdixon ,

Danke für das zusätzliche Feedback!

Lesen Sie die großartige Pull-Anfrage von https://github.com/sendgrid/sendgrid-nodejs/pull/261. Es geht nicht direkt auf Ihre spezifische Idee ein, aber es ist ein Schritt in die richtige Richtung.

@thinkingserious Sie erwähnen, dass das Low-Level-Anforderungsmaterial bald versteckt sein wird. sendgrid-rest . Auf diese Weise müssen Sie in dieser Bibliothek lediglich E-Mails senden und damit nur die E-Mail-Sende-API verfügbar machen.

Das war, dass Sie Bedenken getrennt und den Fokus dieses Pakets ein wenig eingegrenzt haben , um eine sauberere API mit Verkettung usw. zu ermöglichen, wie von

@adambuczynski ,

Unser Plan ist es, die Abstraktionsschicht durch die Helfer auszuführen. Mail ist die erste, aber in naher Zukunft planen wir, eine für die Verwaltung und Vorlagen von Unterbenutzern hinzuzufügen. Aber zuerst müssen wir den Mail-Helfer polieren und zum Standard machen.

Sie haben Recht, diese Bibliothek ist nur eine sehr dünne Schicht über sendgrid-rest und fügt einfach Beispiele, eine USAGE-Datei und Komponententests hinzu (diese sind alle automatisiert [wir hoffen, dies auch als Open Source zu verwenden] unter Verwendung unserer Swagger-Definition ). Langfristig planen wir die Implementierung von Hilfecode für alle Endpunkte, einschließlich einer Datenvalidierung in beide Richtungen, wobei der Kern dieser Funktionalität ebenfalls automatisiert wird. Workflows und Anwendungsfälle werden von Hand erstellt.

In den nächsten Wochen / Monaten werden wir die Roadmap hier auf GitHub für weitere Rückmeldungen veröffentlichen.

Außerdem werden wir dieser Bibliothek bis Ende August Unterstützung für den Incoming Parse Webhook hinzufügen.

Vielen Dank, dass Sie diese Frage gestellt haben, und ich hoffe, dass meine Antwort weitere Rückmeldungen von Ihnen und der Community hervorruft. Wir möchten, dass dies eine Community-gesteuerte Bibliothek ist, die von SendGrid unterstützt und geleitet wird.

Danke für das Update @thinkingserious. Ich werde gerne in Zukunft eine Rolle in der sendgrid nodejs-Bibliothek spielen.

Warum fügen Sie zu diesem Zeitpunkt Parse-Unterstützung hinzu? Ich dachte, dass der Parse-Dienst im nächsten Januar eingestellt wird.

@thinkingserious Ich habe vergessen zu erwähnen, dass ich mich nur

@adambuczynski das sind tolle Neuigkeiten! Außerdem rückt Ihre Pull-Anfrage immer näher an die Spitze. Ich denke, ich werde es Anfang nächster Woche zusammenführen können.

In Bezug auf Parse haben wir uns noch nicht entschieden, es offiziell zurückzuziehen. Das Hinzufügen von Unterstützung in den Bibliotheken ist Teil unseres Tests, um festzustellen, ob wir es am Laufen halten oder nicht.

@IonicaBizau ,

Dankeschön! Ihre Unterstützung wird sehr geschätzt!

Gibt es eine Möglichkeit, mehrere Empfänger mithilfe des Mail-Helfers festzulegen?
Ich stelle fest, dass helper.Mail(from_email, subject, to_email, content) personalization.addTo , um den Empfänger festzulegen. Ich glaube, dies funktioniert nur mit 1 Empfänger, nicht mit einer Reihe von Empfängern (vielleicht irre ich mich), und der Helfer stellt kein setTo Funktion (ideale Methode zum Einstellen der Aufgaben).

Ich sehe, wenn ich die Personalisierung selbst mit let personalization = new helper.Personalization(); einstellen würde, könnte ich personalization.tos = [email, email]//email=new helper.Email(email_address, name) tun, ist das sicher? Wird es sich in zukünftigen Versionen wahrscheinlich ändern?

@ Albert-the-Creator Ich benutze es wie folgt:

  //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);

Ich denke, Sie können mehrere Empfänger hinzufügen, indem Sie die Zeile recipients.addTo wiederholen, beispielsweise in einer Schleife.

Ich finde diesen Ansatz ziemlich ausführlich, da er in E-Mail- und Personalisierungsklassen aufgeteilt ist. Manchmal möchten Sie einfach eine E-Mail-Adresse hinzufügen und diese wegschicken. Dazu benötigen Sie viele Codezeilen.

@ Albert-the-Creator,

Dieser Konstruktor wurde entwickelt, um das Senden einer einzelnen E-Mail zu vereinfachen. Im Grunde handelt es sich um eine "Hallo E-Mail" -Funktion.

Bei mehreren E-Mails möchten Sie wahrscheinlich diesem Beispiel folgen (da Sie diesen Pfad bereits durch Festlegen der Personalisierung selbst festgelegt haben): https://github.com/sendgrid/sendgrid-nodejs/blob/master/examples/helpers/mail /example.js#L15

Es kann auch nützlich sein, Informationen zu Personalisierungen zu lesen: https://sendgrid.com/docs/Classroom/Send/v3_Mail_Send/personalizations.html

Der Helfer wird sich definitiv weiterentwickeln, aber alle bahnbrechenden Änderungen werden mit einer wichtigen Punktfreigabe angezeigt. Ich erwarte jedoch nicht, dass sich die API stark ändert.

@adambuczynski ,

Vielen Dank für Ihre Teilnahme! Wir müssen den Helfer aktualisieren, um zusätzliche häufige Anwendungsfälle wie diesen zu berücksichtigen und beispielsweise E-Mails mit Vorlagen zu senden.

@thinkingserious Die Helfer-API war etwas, an dem ich auch interessiert bin, möglicherweise umzugestalten / zu verbessern, wenn ich wieder Zeit habe :)

@adambuczynski ,

Das ist großartig, wenn Sie sich dazu entschließen, rufen Sie mich bitte an. Oder wenn wir vor Ihnen damit anfangen, werde ich Sie anrufen.

Ich habe den Code von @bcootner verwendet und es hat gut funktioniert. Es wäre jedoch großartig, ein korrektes und offizielles Beispiel für die Verwendung einer Vorlage mit diesem Knoten-Plugin zu haben.

@otmezger ,

Vielen Dank für das Follow-up!

Ich arbeite diese Woche an diesem Beispiel. Sie finden es in der README-Datei.

Ich verwende den Vorlagen-Helfer nicht, aber ich werde meinen Ansatz zum Laden von HTML- und Textformat-Vorlagen und -Partials über eine Hilfsmethode load teilen:

  /**
   * 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)));
  },

Dies kann dann wie folgt verwendet werden, um ein Objekt zu erhalten, das für die Verwendung mit Sendgrid bereit ist:

  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,
    }));

Sie können das Beispiel leicht anpassen, um auch Vorlagen für Lenker zu verwenden. Im obigen Beispiel ist der replaceData -Helfer eine einfache Funktion, die Lenker-ähnliche Tags durch bereitgestellte Daten ersetzt.

Ich bin mir nicht sicher, ob dies relevant ist oder nicht, aber durch die NICHT Verwendung des "Mail-Helfers" habe ich mir unermesslich viel Zeit gespart. Dies ist, nachdem ich so frustriert war, dass ich absichtlich auf 2.0 herabgestuft habe. Ich verwende nur eine werkseitige Funktion, um gültigen V3-JSON zu generieren, und bin jetzt sehr gespannt auf die Verbesserungen in der V3-API (da ich sie jetzt tatsächlich verwenden kann).

Dies ist etwas, mit dem ich zuerst auch zu kämpfen hatte. Ich denke, die
Helfer könnten wahrscheinlich effizienter und benutzerfreundlicher gemacht werden. Ich würde
argumentieren sogar, dass sie vielleicht nicht Teil des Sendgrid-Kernmoduls sein sollten,
um Bedenken zu trennen und es den Menschen zu ermöglichen, sich für deren Verwendung zu entscheiden.

Ich werde sie mir noch einmal ansehen und sehen, ob ich etwas Beton finden kann
Vorschläge.

Am Fr, 26. August 2016, 05:48 Sean Lindo [email protected] schrieb:

Ich bin mir nicht sicher, ob dies anhand eines Beispiels geschieht oder nicht, aber indem ich den "Mail-Helfer" NICHT verwende.
Ich habe mir unermesslich viel Zeit gespart. Dies ist, nachdem ich es bekommen habe
frustriert habe ich absichtlich auf 2.0 herabgestuft.

- -
Sie erhalten dies, weil Sie erwähnt wurden.
Antworte direkt auf diese E-Mail und sieh sie dir auf GitHub an
https://github.com/sendgrid/sendgrid-nodejs/issues/252#issuecomment -242479491,
oder schalten Sie den Thread stumm
https://github.com/notifications/unsubscribe-auth/AAd8Qu5iRLFQwoKlRd2fP5oioT1uLqB6ks5qjdV2gaJpZM4JAiac
.

@ Seanlindo ,

Vielen Dank, dass Sie sich die Zeit genommen haben, Feedback zu geben!

Hier ist ein Beispiel für die Verwendung dieser Bibliothek ohne den Mail-Helfer: https://github.com/sendgrid/sendgrid-nodejs#without -mail-helper-class

Der Mail Helper ist eine erste Version und wir sind auf Feedback wie Ihr angewiesen, um die nächste Version zu verbessern. Haben Sie etwas dagegen, die spezifischen Probleme zu teilen, auf die Sie gestoßen sind, damit wir Tickets erstellen können, um sie zu beheben?

Außerdem füge ich Ihre Stimme zu unserer Backlog-Aufgabe hinzu, um den Mail-Helfer zu verbessern und ihn in der Warteschlange nach oben zu verschieben. Vielen Dank!

@adambuczynski ,

Ich sehe, dass deine Großartigkeit anhält :)

Ich freue mich auf Ihr Feedback, ich weiß, es wird großartig!

@julesbou ,

Wir haben eine USE_CASES.md- Datei

Ich freue mich auf Ihr Feedback, ich weiß, es wird großartig!

👻

@thinkingserious Sicher! Geben Sie mir einen Tag oder so und ich werde Ihnen ein konkretes Beispiel geben.

Dies ist einer meiner Lieblingsthreads hier :)

Ich denke, Ihr Feedback wird für die nächste Iteration dieser Bibliothek von entscheidender Bedeutung sein, was wahrscheinlich eine bahnbrechende Änderung sein wird. Wenn Sie einen Moment Zeit haben, können Sie sich bitte unseren Vorschlag ansehen. https://github.com/sendgrid/sendgrid-nodejs/issues/290

Vielen Dank!

@thinkingserious Endlich wurde mir

Ich wollte nicht den gesamten Code von Sendgrid überarbeiten, also habe ich beschlossen, stattdessen einen einfachen Wrapper zu erstellen ,

Obwohl die Hilfsklassen von Sendgrid hinter den Kulissen nützlich sind, um E-Mail-Modelle zu erstellen und zu validieren, sollten sie meiner Meinung nach nicht gezwungen werden, nur mit der API zu interagieren. Ich finde, das Schreiben von Node-Apps wird dadurch komplizierter als es sein sollte, und die Benennung der Helfer kann ziemlich verwirrend sein, z. B. Mail vs Email .

Ich denke, das grundlegende Beispiel veranschaulicht das Problem gut:

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

Dies scheint einfach viel zu kompliziert für etwas so Grundlegendes wie "Ich möchte eine E-Mail senden". Sie müssen 8 verschiedene Abhängigkeiten laden und 15 Codezeilen schreiben, bevor Sie eine E-Mail senden können.

Die Nichtverwendung der Hilfsklassen ist jedoch wahrscheinlich noch schlimmer, da Sie dann die erforderliche Struktur der E-Mail-JSON-Anforderung kennen und diese selbst korrekt ausfüllen müssen. Ein Fehler wird die Anfrage leicht brechen.

Also habe ich die gesamte Logik der Hilfsklassen hinter einem einfachen, benutzerfreundlichen API-Helfer abstrahiert, damit das Senden von E-Mails mit Sendgrid wieder einfach und unterhaltsam wird :)

Das grundlegendste Beispiel lautet:

//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 

Die Anfrage wird hinter den Kulissen erstellt und verwendet die Helfer von Sendgrid transparent.

Es unterstützt auch das Senden mehrerer E-Mails, macht das Sendgrid-Objekt verfügbar, falls weitere Anpassungen erforderlich sind, akzeptiert auch Sendgrid Mail -Instanzen und akzeptiert eine Vielzahl von Formaten für die An / Von-Felder, z. B. Name <[email protected]> oder ein Objekt mit Namen / E-Mail-Eigenschaften. Weitere Informationen finden Sie in der README-Datei .

Es gibt wahrscheinlich noch Verbesserungspotenzial, aber ich wollte diese Lösung hier für Leute freigeben, die die Sendgrid-API verwenden möchten, ohne von ihr überwältigt zu werden.

Hoffe, es ist nützlich für jemanden, und vielleicht kann es eine Richtung für die Zukunft dieser Bibliothek geben, indem es eine einfachere API verfügbar macht :)

cc @julesbou etwas spät, aber ich hoffe, Sie können noch eine Verwendung dafür finden.

@adamreisnz im Ernst, danke.

Mein Hintergrundjob, der E-Mails über sendgrid sendet, war die Verwendung von v4.0.7, was bereits kompliziert genug war. Ich habe auf die neueste Version aktualisiert und leider ist alles kaputt gegangen. Ich war so frustriert darüber, wie komplex es war, eine E-Mail zu senden, dass ich mich nicht einmal darum kümmerte, sie zu aktualisieren.

Alles in allem ist die Einfachheit genau das, wonach ich gesucht habe. Ich werde es über das Wochenende versuchen.

Prost!

@jamesdixon Ich war immer noch auf v3.xx stecken und wollte auch nicht upgraden :)

Hoffentlich finden Sie es nützlich. Lassen Sie mich wissen, wie es bei Ihnen funktioniert und wenn etwas Kritisches fehlt, danke!

@adamreisnz ,

Das ist super und danke, dass du es mit unserer Community geteilt hast :)

tldr; Unsere Helferklassen sind noch nicht beendet und du hast uns schon dahin geschlagen, wohin wir gehen :)

Wir stimmen Ihren Gedanken voll und ganz zu und dies ist die Phase des v3-Bibliotheksupdates, an dem wir derzeit in allen 7 unserer SDKs arbeiten. Weitere Informationen zum Node.js-Projekt finden Sie im Mail Helper Enhancement-Projekt hier .

Derzeit beenden wir die C # -Bibliothek. Ein konkretes Beispiel dafür, was wir für diese Node.js-Bibliothek planen, finden Sie hier . Wir hoffen, dass wir das innerhalb weniger Tage veröffentlichen können.

Also habe ich einen Vorschlag:

Würde es Ihnen etwas ausmachen, Ihre Lösung hier in den Mail-Helfer aufzunehmen (ähnlich wie in C #)? Ich denke, Ihre Arbeit würde in diesem Fall eine größere Reichweite erreichen. Wenn nicht, überhaupt kein Problem. Da Sie Ihr Projekt unter der MIT-Lizenz veröffentlicht haben, würde ich hoffen, dass Sie uns vergeben, wenn wir uns ein wenig von Ihrer guten Arbeit leihen;) Und natürlich werden wir sicherstellen, dass Sie für Ihre Beiträge eine Gutschrift erhalten.

Wenn Sie sich entschließen, Ihre Arbeit getrennt zu halten, können Sie hier im Bereich Community Libraries einen Link hinzufügen.

Vielen Dank für Ihre erstaunliche fortgesetzte Unterstützung. Du rockst!

@thinkingserious froh zu hören, dass Sie daran denken, den gleichen Weg zu gehen. Das C # -Beispiel sieht besser aus, aber ich denke, dass es für eine JS-Implementierung immer noch etwas kompliziert ist. Es ist nicht unbedingt immer der beste Weg, alles in JS zu machen.

Da ich immer noch die Hilfsklassen unter der Haube verwende, weiß ich nicht, wie viel davon tatsächlich nützlich wäre, um in die offizielle Bibliothek zu portieren. Ich wäre wahrscheinlich eher geneigt, bei einem größeren Umschreiben (z. B. v5) zu helfen und von vorne zu beginnen, indem ich Eingaben von Benutzern und der Node-Community nehme und eine fantastische API erarbeite, die sowohl einfach zu verwenden als auch bei Bedarf flexibel ist.

Aber wenn Sie in der Zwischenzeit einen Teil des Codes von meinem Wrapper ausleihen möchten, um ihn in der offiziellen Bibliothek zu verwenden, versuchen Sie es auf jeden Fall :) Ich werde den Link zu meinem Wrapper auf dieser Seite hinzufügen 🎉

Ich denke tatsächlich, dass es eine gute Idee sein könnte, das Projekt in zwei Pakete aufzuteilen, eine niedrigere Ebene, die die Anforderungslogik für die Interaktion mit der API enthält, und eine höhere Ebene nur zum Senden von E-Mails, ähnlich wie ich sie erstellt habe.

Das untergeordnete Paket kann für Personen verwendet werden, die vollen Zugriff auf die API benötigen, während das Mailer-Paket für Personen geeignet ist, die nur E-Mails senden möchten. Und natürlich würde der Mailer unter der Haube das API-Paket verwenden.

@thinkingserious was

@adamreisnz ,

Vielen Dank für das nachdenkliche Feedback, wie immer.

Ich bin mir nicht sicher, ob wir das Projekt an dieser Stelle aufteilen müssen. Ich denke, wir können mit dem aktuellen Hilfsmodell ähnliche Ergebnisse erzielen. Trotzdem bin ich offen für die Erforschung einer neuen Architektur in einer zukünftigen Version und würde mich freuen, Sie dafür an Bord zu haben.

Hoffentlich werden einige andere in der Community wiegen.

Ich werde tiefer darüber nachdenken und mich erneut engagieren, wenn es an der Zeit ist, den aktualisierten Mail-Helper zu implementieren.

Nochmals vielen Dank für Ihre Unterstützung und für das Hinzufügen des Links zu unseren Dokumenten!

Es geht darum, Bedenken zu trennen. Sie könnten einen Helfer / Wrapper für das einfache Versenden in die Hauptbibliothek einbinden, aber meiner Meinung nach vermischt dies zwei getrennte Bedenken zum wahrscheinlichen Nachteil oder zur unnötigen Komplikation beider. Wenn Sie sie getrennt halten, können die Verbraucher die Bibliothek auswählen, die sie benötigen (oder beides), und dies würde wahrscheinlich die Entwicklung beider Bibliotheken aufgrund der klar definierten Grenzen erleichtern.

Ich denke, es liegt in der Natur der Node- und npm-Module, so viele Probleme wie möglich zu trennen und jedes Paket eine bestimmte Aufgabe zu erledigen (und gut darin zu sein!). Es ist etwas, woran ich mich auch gewöhnen musste, als ich mit Node anfing, aber als ich das tat, mochte ich die Freiheit und Fähigkeit, saubere, einfache Pakete zu entwickeln, die es bietet.

Freuen Sie sich auf einige Kommentare aus der Community.

Nun, Sie überzeugen definitiv mit einem soliden Argument :)

Ich weiß es wirklich zu schätzen, dass Sie sich die Zeit genommen haben, dies zu erläutern.

Ich freute mich schon darauf, wieder an dieser Bibliothek zu arbeiten, und jetzt freue ich mich sehr , wieder mit Ihnen und der Community an diesem SDK zu arbeiten.

Großartig, lass es mich wissen, wenn du daran arbeiten wirst :)
Ich bin 4 Wochen in Urlaub, was bedeutet, dass ich endlich Zeit habe, um auch an Open-Source-Projekten zu arbeiten 🌴

@adamreisnz ,

Glückwunsch!

Ein viel höheres "Mailer-Paket" ist genau das, was wir wollen. Ich muss nur ein paar E-Mails senden.

Mit der letzten Version war es kinderleicht und jetzt ist es ein unheiliges Durcheinander. Für das Beispiel "Basic" sind derzeit 8 Variablen definiert , für die spezielle Konstruktoren erforderlich sind. Ein großer Rückschritt in Bezug auf Benutzerfreundlichkeit.

Sollte so einfach sein wie

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

Es werden keine Dokumente benötigt, nur ein Beispiel, das wir kopieren und einfügen können. Das ist der Hauptwert von SendGrid für unser Team, und leider fehlt es jetzt.

@adamreisnz Sieht gut aus; sehr offensichtliche Designentscheidungen. Ich hoffe, Sie sind auf der SendGrid-Gehaltsliste!

@thinkingserious Bitte Hauptdokumente auf das verweisen , da es alles erheblich vereinfacht. Wenn ich heute früher davon gewusst hätte, hätte es mir stundenlange Kopfschmerzen erspart, wenn ich versucht hätte, das zu verwenden, was imho ein überentwickeltes Java- inspirierte API in JS. Bitte geben Sie Ihren Benutzern, was sie wollen, nicht was Sie denken, dass sie wollen :-)

Außerdem wäre ich nicht überrascht, wenn andere Entwickler nach dem Sonnenuntergang der V2-API häufiger hier landen würden und neue Konten gezwungen sein werden, die V3-API zu verwenden. Persönlich war das erste, was ich versuchte, die Verwendung von Nodemailer (dessen Sendgrid-Transport immer noch mit v2 funktioniert), was in der Vergangenheit für Dutzende von Projekten Sinn gemacht hat, aber diesmal ewig gedauert hat, um zu arbeiten. Wenn ich angesichts der Popularität von Nodemailer in der Node-Community raten müsste, wäre ich nicht der einzige, der sich in den kommenden Monaten so fühlt.

@ fisch0920 danke für dein Feedback, ich werde in den kommenden Wochen mit @thinkingserious zusammenarbeiten, um die Sendgrid-API zu verbessern. Hoffentlich finden wir etwas, das einfach zu bedienen und bei Bedarf dennoch flexibel genug ist.

Hallo, alle miteinander,

Ich dachte, Sie könnten an der Neugestaltung des Mail-Helfers SendGrid Node.js interessiert sein: https://github.com/sendgrid/sendgrid-nodejs/pull/378

Ihr Feedback wäre sehr dankbar!

Mit besten Empfehlungen,

Elmer

Bitte gehen Sie zu # 378 für Updates, danke!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

kiranshashiny picture kiranshashiny  ·  4Kommentare

prasoonjalan picture prasoonjalan  ·  3Kommentare

thinkingserious picture thinkingserious  ·  4Kommentare

thidasapankaja picture thidasapankaja  ·  4Kommentare

Loriot-n picture Loriot-n  ·  4Kommentare