Sendgrid-nodejs: benutzerdefinierter Header für einen Anhang

Erstellt am 28. März 2016  ·  41Kommentare  ·  Quelle: sendgrid/sendgrid-nodejs

Hi,

Wir verwenden sendgrid, um iCal (ics)-Dateien zusammen mit dem E-Mail-Text anzuhängen. Wir können den Inhaltstyp für die ics-Datei auf "text/calendar" setzen, jedoch ist es nicht möglich, den zusätzlichen Header "method=REQUEST" zu setzen, was dazu führt, dass die E-Mail-Clients den Anhang nicht als Kalenderereignis erkennen.

Wird es möglich sein, benutzerdefinierte Header für jeden Anhang festzulegen?

Grüße

non-library issue

Alle 41 Kommentare

Hallo @mindnuts ,

Ich bin mir nicht sicher ob ich das verstehe. Lassen Sie mich sicherstellen, dass ich Folgendes verstehe:

  1. Sie haben eine E-Mail mit einem iCal-Anhang
  2. Sie möchten dieser E-Mail einen Header hinzufügen (zB X-Header: method=Request)
  3. Im Moment können Sie keinen zusätzlichen Header hinzufügen. Was hast du versucht?

Vielen Dank!

@thinkingserious

Beim Erstellen des E-Mail-Objekts erstellen wir das Datei-Array à la und setzen "contentType" auf "text/calendar" für .ics-Dateien. Damit die ics-Dateien von Outlook korrekt erkannt werden, sollte im Anhang auch method=REQUEST im Header gesetzt sein.

Content-Type: text/calendar; charset=UTF-8; method=REQUEST

Wird dies im sendgrid-Client möglich sein?

Können Sie bitte den Code teilen, den Sie verwenden, um diese Kopfzeile festzulegen?

@thinkingserious hier gehts:

var sendgrid  = require('sendgrid')('YOUR_SENDGRID_API_KEY');

var email = new sendgrid.Email({
  to:       '[email protected]',
  from:     '[email protected]',
  subject:  'Hello World',
  html: 'My first email <b>through SendGrid.</b>',
  text:     'My first email through SendGrid.'
});

email.addFile({
  filename: 'calendar.ics',
  path: './calendar.ics',
  contentType: 'text/calendar'
});

sendgrid.send(email, function(err, json) {
  if (err) { return console.error(err); }
  console.log(json);
});

Hier ist der von Sendgrid generierte Header für diesen Anhang:

Content-Disposition: attachment; filename="calendar.ics"
Content-Transfer-Encoding: base64
Content-Type: text/calendar; charset=utf-8; name="calendar.ics"

Was ich gerne hätte ist (REQUEST ist nur ein Beispiel):

Content-Type: text/calendar; charset=utf-8; method=REQUEST; name="calendar.ics"

Danke, das Beispiel ist sehr hilfreich.

Haben Sie versucht, den Header direkt mit dem Parameter headers setzen?

@thinkingserious Ich möchte den Header der E-Mail nicht festlegen, ich möchte den benutzerdefinierten Header für den Anhang (in meinem Fall .ics-Datei) festlegen können, der der E-Mail hinzugefügt wird.

Grüße
m

Danke für das Update, das macht Sinn.

Dies wird mit der v3-Bibliothek kein Problem mehr sein. Im Moment können Sie diesen Header nur über die SMTPAPI festlegen: https://github.com/sendgrid/smtpapi-nodejs

@thinkingserious Danke für deine Antwort. Was ist die ETA für V3?

Sollte nicht länger als ein paar Monate dauern.

@mindnuts ,

Wir sind jetzt ein paar Wochen entfernt, Sie können den v3 /mail/send-Endpunkt hier ansehen : https ://github.com/sendgrid/sendgrid-nodejs/tree/v3beta

Danke für deine Unterstützung!

Hallo @thinkingserious ,

Ich denke, alle warten noch auf eine Lösung, ich auch!
Ich möchte auch die Methode auf REQUEST setzen und auf das Problem stoßen.

Hast du ein Update? Es ist 2 Monate her!

Vielen Dank,
Einen schönen Tag noch,
Jérémy

Hey @thinkingserious ,

Ich bin aufgrund dieses Problems immer noch gesperrt!
Hast du irgendein Update ? Irgendeine Lösungsmöglichkeit ?

Vielen Dank,
Jérémy

Nochmal @thinkingserious ,
Wir brauchen es wirklich!

+1

response: {
      "statusCode": 400,
      "body": {
        "errors": [
          {
            "message": "The attachment type cannot contain ';', or CRLF characters.",
            "field": "attachments.0.type",
            "help": "http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type"
          }
        ]
      },
      "headers": {
        "server": "nginx",
        "date": "Wed, 01 Mar 2017 04:43:59 GMT",
        "content-type": "application/json",
        "content-length": "216",
        "connection": "close",
        "x-frame-options": "DENY",
        "access-control-allow-origin": "https://sendgrid.api-docs.io",
        "access-control-allow-methods": "POST",
        "access-control-allow-headers": "Authorization, Content-Type, On-behalf-of, x-sg-elas-acl",
        "access-control-max-age": "600",
        "x-no-cors-reason": "https://sendgrid.com/docs/Classroom/Basics/API/cors.html"
      }
    }
}

Verpasse ich etwas? Was ist die vorgeschlagene Lösung? warum ist das geschlossen?

@pascalopitz ,

Dieser hätte nicht geschlossen werden dürfen. Danke für die Warnung.

Nochmal @thinkingserious lösen Sie dieses Problem?!

Hallo @ataraxido ,

Dieses Problem steht auf der Produkt-Roadmap, aber ich weiß nicht, wann es ausgeliefert wird.

Vor kurzem haben wir einige neue Stimmen für diese Funktion erhalten. Wann immer das passiert, aktualisiere ich das Produktteam, um die Priorität zu erhöhen.

Mit besten Empfehlungen,

Elmer

@thinkingserious Wollte nur hinzufügen, dass dies auch für uns ein wirklich wichtiges Feature ist. Gibt es ein Update zur Produkt-Roadmap?

Einverstanden @hdornier , ich werde deine Stimme zum Thema hinzufügen. Danke, dass Sie sich die Zeit genommen haben abzustimmen!

@thinkingserious , Sie haben erwähnt, dass dies mit smtpapi möglich ist. Hast du ein Beispiel dafür? Welcher Teil des smtpapi? Eine einfache Substitution in irgendeiner Form?

Hallo @e99cog ,

Ich bin mir nicht sicher, warum ich das vorher gesagt habe :(

Ich weiß nicht, ob dies mit der SMTPAPI funktioniert, aber hier ist ein Beispiel für die Verwendung.

Mit besten Empfehlungen,

Elmer

+1 auch hier

Am Ende musste ich dieses Problem mit mailgun und dem darin enthaltenen message.mime-Endpunkt lösen, da ich damit den Mime explizit senden kann.

Bietet sendgrid diese Funktion in einer API an?

Hallo allerseits!

Ich bin Matt, der Developer Experience Product Manager bei SendGrid. Ich bin daran interessiert, mehr darüber zu erfahren, was Sie von MIME-Typen benötigen. Wir tun dies normalerweise als Google-Hangout, damit ich mehr über Ihren Anwendungsfall und die Besonderheiten Ihrer Anforderungen erfahren kann.

Bitte nimm dir einen Termin in meinem Kalender - https://calendly.com/matt-bernier/mail-send-mime-types

Vielen Dank!!

müssen Sie dies auch für ein anstehendes Projekt erledigen - gibt es dazu einen Status? Es ist 2 Jahre her.

+1
Gibt es dafür eine ETA?

Das interessiert mich auch sehr. Sicherlich muss es jetzt möglich sein, eine Antwort zu finden.

Ich möchte die Dinge nicht verfluchen, aber ein Birdy sagt mir, dass wir _super_ kurz davor sind, dies bereitzustellen :) Ich werde hier ein Update veröffentlichen, sobald es live ist.

Hallo alle zusammen!

Ich freue mich sehr, Ihnen mitteilen zu können, dass dieses Problem behoben wurde und der Fix in Produktion ist! Probieren Sie es bitte aus und lassen Sie es mich wissen, wenn weitere Probleme auftreten.

Vielen Dank für Ihre Geduld in diesem Fall!

Mit besten Empfehlungen,

Elmer

@thinkingserious Das sind tolle Neuigkeiten! Können Sie helfen, die nächsten Schritte zu verstehen? Wurde der zusätzliche Header > method=REQUEST unterstützt?

Hallo @thinkingserious

Ich habe es gerade versucht und erhalte immer noch einen Fehler (mit der API):

{"errors":[{"message":"Der Anhangstyp darf keine ';'- oder CRLF-Zeichen enthalten.","field":"attachments.0.type","help":" http://sendgrid. com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type "},{"message":"Der http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type "}]}

Folgendes mache ich mit der API-API:

$attachment->setType('text/calendar; charset="UTF-8"; method=REQUEST');

Sind Sie sicher, dass das Problem gelöst ist? Was sollen wir machen ?

Vielen Dank

@ataraxido es funktioniert bei mir
"attachments": [{ "content": "QkVHSU46....EQVINCg==", "type": "text/calendar; method=REQUEST", "filename": "file1.ics" }]

202 zurückgeschickt und Post wurde gesendet

Hey @ataraxido, du musst den Zeichensatz nicht angeben, da SendGrid dieses Feld automatisch anhängt (dasselbe gilt für text/html, text/plain). Probiere es noch einmal aus und lass es uns wissen, ob das funktioniert 🤞

@ataraxido ,

Wo kann man es zum Laufen bringen?

Hallo @abhilashabhatia ,

Ja, Sie können jetzt "type": "text/calendar; method=REQUEST" tun. Bitte lassen Sie mich wissen, wenn Probleme auftreten.

Hallo @thinkingserious

Ich konnte die "Header"-Methode = REQUEST senden, aber ich konnte kein Inline-ICS senden, das in Outlook einwandfrei funktioniert.
Sogar inline mit diesem benutzerdefinierten "Header" erinnert das Ereignis an ein angehängtes ICS.

Ich denke, es ist ein ziemlich breiter Anwendungsfall für alle Ihre Kunden; Hättest du ein funktionierendes Beispiel oder eine Anleitung?

Vielen Dank

+1 zum Kommentar von @ataraxido -- können wir ein Beispiel bekommen @thinkingserious

@ataraxido @tetreault ,

Nur zur Verdeutlichung, das Senden als Anhang funktioniert in Outlook, aber nicht inline?

Dies ist jetzt in unserem Backlog und ich habe ein Problem erstellt, falls jemand aus der Community eine PR anbieten möchte.

@thinkingserious tatsächlich ist das ICS in die E-Mail eingebettet, aber Outlook betrachtet es als Anhang, sodass es das erwartete Verhalten/die erwartete Anzeige eines E-Mail-Inline-Ereignisses aufweist.
Ich frage mich warum, habe viele Dinge ausprobiert. Ich denke, es könnte daran liegen, dass Sie erzwingen, dass Inline-Elemente base64-codiert werden, während das typische ICS-Inlining auf 7 Bits basiert.

Hallo @ataraxido ,

Danke für die Ausarbeitung, ich denke, Sie haben vielleicht etwas in Bezug auf die Kodierung verstanden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

kiranshashiny picture kiranshashiny  ·  4Kommentare

nicoasp picture nicoasp  ·  3Kommentare

prasoonjalan picture prasoonjalan  ·  3Kommentare

amlcodes picture amlcodes  ·  4Kommentare

TobiahRex picture TobiahRex  ·  3Kommentare