Sendgrid-nodejs: en-tête personnalisé pour une pièce jointe

Créé le 28 mars 2016  ·  41Commentaires  ·  Source: sendgrid/sendgrid-nodejs

Salut,

Nous utilisons sendgrid pour joindre des fichiers iCal (ics) avec le corps du courrier. Nous sommes en mesure de définir le type de contenu sur « text/calendar » pour le fichier ics, mais il n'est pas possible de définir un en-tête supplémentaire « method=REQUEST » qui empêche les clients de messagerie de reconnaître la pièce jointe comme un événement de calendrier.

Sera-t-il possible de définir des en-têtes personnalisés pour chaque pièce jointe ?

Salutations

non-library issue

Tous les 41 commentaires

Bonjour @mindnuts ,

Je ne suis pas sûr de comprendre. Permettez-moi de m'assurer d'avoir bien compris :

  1. Vous avez un e-mail avec une pièce jointe iCal
  2. Vous souhaitez ajouter un en-tête à cet e-mail (par exemple, X-Header : method=Request)
  3. Pour le moment, vous ne pouvez pas ajouter d'en-tête supplémentaire. Qu'as-tu essayé?

Merci!

@pensée sérieuse

Lors de la création de l'objet e-mail, nous créons le tableau de fichiers à la une et définissons "contentType" sur "text/calendar" pour les fichiers .ics. Pour que les fichiers ics soient correctement détectés par Outlook, la pièce jointe doit également avoir method=REQUEST défini dans l'en-tête.

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

Cela sera-t-il possible dans le client sendgrid ?

Pouvez-vous s'il vous plaît partager le code que vous utilisez pour définir cet en-tête ?

@thinkingserious et voilà :

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

Voici l'en-tête généré par Sendgrid pour cette pièce jointe :

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

Ce que j'aimerais avoir, c'est (REQUEST n'est qu'un exemple) :

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

Merci, cet exemple est très utile.

Avez-vous essayé de définir l'en-tête directement avec le paramètre headers ?

@thinkingserious Je ne veux pas définir l'en-tête de l'e-mail, je veux pouvoir définir l'en-tête personnalisé pour la pièce jointe (fichier .ics dans mon cas) ajoutée à l'e-mail.

Salutations
M

Merci pour la mise à jour, c'est logique.

Ce ne sera plus un problème avec la bibliothèque v3. Pour l'instant, la seule façon de définir cet en-tête est via SMTPAPI : https://github.com/sendgrid/smtpapi-nodejs

@thinkingserious Merci pour votre réponse. Qu'est-ce que l'ETA pour la V3 ?

Cela ne devrait pas dépasser quelques mois.

@mindnuts ,

Nous sommes maintenant dans quelques semaines, vous pouvez consulter le point de terminaison v3 /mail/send ici : https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html et la nouvelle version de cette bibliothèque ici : https ://github.com/sendgrid/sendgrid-nodejs/tree/v3beta

Merci pour votre aide!

Bonjour @thinkingserious ,

Je suppose que tout le monde attend toujours une solution, moi aussi !
J'aimerais également définir la méthode sur REQUEST et rencontrer le problème.

Avez-vous une mise à jour ? ça fait 2 mois !

Merci,
Bonne journée,
Jérémy

Salut @thinkingserious ,

Je suis toujours bloqué à cause de ce problème !
Avez-vous une mise à jour ? Toute solution ?

Merci,
Jérémy

Encore une fois
Nous en avons bien besoin !

+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"
      }
    }
}

Est-ce que j'ai raté quelque chose ? Quelle est la solution proposée ? pourquoi c'est fermé ?

@pascalopitz ,

Celui-ci n'aurait pas dû être fermé. Merci pour l'information.

Encore une fois

Bonjour @ataraxido ,

Ce problème est sur la feuille de route du produit, mais je ne sais pas quand il sera livré.

Récemment, nous avons reçu quelques nouveaux votes pour cette fonctionnalité. Chaque fois que cela se produit, je mets à jour l'équipe produit pour aider à augmenter la priorité.

Meilleures salutations,

Elmer

@thinkingserious Je voulais juste ajouter qu'il s'agit également d'une fonctionnalité très importante pour nous. Une mise à jour sur la feuille de route du produit ?

D'accord @hdornier , j'ajouterai votre voix au problème. Merci d'avoir pris le temps de voter !

@thinkingserious , vous avez mentionné que cela peut être fait avec smtpapi. Avez-vous un exemple de cela? Quelle partie du smtpapi ? Une simple substitution en quelque sorte ?

Salut @e99cog ,

Je ne sais pas pourquoi j'ai dit ça plus tôt :(

Je ne sais pas si cela fonctionnera avec SMTPAPI, mais voici un exemple de son utilisation.

Meilleures salutations,

Elmer

+1 ici aussi

En fin de compte, j'ai dû résoudre ce problème en utilisant mailgun et le point de terminaison message.mime qu'il possède, car il me permet d'envoyer le mime explicitement.

Sendgrid propose-t-il cette fonctionnalité dans une API ?

Salut tout le monde!

Je suis Matt, le chef de produit Developer Experience chez SendGrid. Je souhaite en savoir plus sur ce dont vous avez besoin à partir des types MIME. Nous le faisons généralement comme un Hangout Google, afin que je puisse en savoir plus sur votre cas d'utilisation et les spécificités de ce dont vous avez besoin.

N'hésitez pas à prendre un moment sur mon calendrier - https://calendly.com/matt-bernier/mail-send-mime-types

Merci!!

devez également gérer cela pour un projet à venir - y a-t-il un statut à ce sujet ? Ça fait deux années.

+1
Un ETA pour ça ?

Cela m'intéresse aussi beaucoup. Certes, il doit être possible de trouver une réponse maintenant.

Je ne veux pas maudire les choses, mais un oiseau me dit que nous sommes _super_ sur le point de déployer ceci :) Je publierai une mise à jour ici une fois qu'elle sera en ligne.

Bonjour à tous!

Je suis SUPER HEUREUX d'annoncer que ce problème a été résolu et que le correctif est en ligne en production ! S'il vous plaît essayez-le et faites-moi savoir si vous rencontrez d'autres problèmes.

Merci pour votre patience sur celui-ci !

Meilleures salutations,

Elmer

@thinkingserious C'est une excellente nouvelle ! Pouvez-vous nous aider à comprendre les prochaines étapes à suivre ? Une prise en charge a-t-elle été fournie pour un en-tête supplémentaire > method=REQUEST ?

Bonjour @thinkingserious

Je viens d'essayer et j'obtiens toujours une erreur (en utilisant l'API):

{"errors":[{"message":"Le type de pièce jointe ne peut pas contenir de caractères ';' ou CRLF.","field":"attachments.0.type","help":" http://sendgrid. com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type "},{"message":"Le type de pièce jointe ne peut pas contenir de caractères ';' ou CRLF.","field":"pièces jointes. 1.type","help":" http://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/errors.html#message.attachments.type "}]}

Voici ce que je fais en utilisant l'API API :

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

Êtes-vous sûr que le problème est résolu? Que devrions nous faire ?

Merci

@ataraxido ça marche pour moi
"attachments": [{ "content": "QkVHSU46....EQVINCg==", "type": "text/calendar; method=REQUEST", "filename": "file1.ics" }]

Renvoyé 202 et le courrier a été envoyé

@ataraxido, vous n'aurez pas besoin de spécifier le jeu de caractères car SendGrid ajoutera automatiquement ce champ (il en va de même pour text/html, text/plain). Donnez-lui une autre chance et dites-nous si cela fait l'affaire

@ataraxido ,

Où pouvez-vous le faire fonctionner?

Bonjour @abhilashabhatia ,

Oui, vous pouvez maintenant faire "type": "text/calendar; method=REQUEST" . S'il vous plaît laissez-moi savoir si vous rencontrez des problèmes.

Bonjour @thinkingserious

J'ai pu envoyer la méthode "header" = REQUEST mais je n'ai pas pu envoyer un ICS en ligne qui fonctionne bien dans Outlook.
Même en ligne avec cet "en-tête" personnalisé, l'événement rappelle un ICS attaché.

Je pense que c'est un cas d'utilisation assez large pour tous vos clients ; Auriez-vous un exemple de travail ou un mode d'emploi ?

Merci

+1 au commentaire de @ataraxido -- pouvons-nous avoir un exemple @thinkingserious

@ataraxido @tetreault ,

Juste pour clarifier, l'envoi en pièce jointe fonctionne dans Outlook, mais pas en ligne ?

Ceci est maintenant dans notre carnet de commandes et j'ai créé un problème au cas où quelqu'un dans la communauté voudrait offrir un PR.

@thinkingserious en fait, l'ICS est intégré dans l'e-mail, mais Outlook le considère comme une pièce jointe, il a donc le comportement / affichage attendu d'un événement en ligne d'e-mail.
Je me demande pourquoi, j'ai essayé beaucoup de choses. Je pense que cela pourrait être dû au fait que vous forcez les éléments en ligne à être encodés en base64 alors que l'enlignement ICS typique est sur 7 bits.

Bonjour @ataraxido ,

Merci pour l'élaboration, je pense que vous pourriez être sur quelque chose concernant l'encodage.

Cette page vous a été utile?
0 / 5 - 0 notes