Sendgrid-nodejs: Comment ajouter des pièces jointes?

Créé le 6 sept. 2016  ·  10Commentaires  ·  Source: sendgrid/sendgrid-nodejs

Nos e-mails sont bien envoyés et nous voulons maintenant ajouter une pièce jointe. Nous avons donc copié cet exemple: https://github.com/sendgrid/sendgrid-nodejs/blob/93763a74a85969382d59fcb3708d22051498f998/examples/helpers/mail/example.js

Et fait du code comme ça:

const sendgrid: any = require('sendgrid')(process.env.sendgrid_key);

sendEmail(data: IEmailData): void {
    const email: any = new sendgrid.Email();
    email.addTo(data.emailTo);
    for (let attachment in data.attachments)
      this.addAttachment(email, attachment);
    sendgrid.send(email, (error: any, json: string) => {
      if (error)
        console.log(error);
    });
  }

  addAttachment(email: any, attachmentData: any): void {
    const attachment = new sendgrid.Attachment();
    attachment.setContent(attachmentData.content);
    attachment.setType(attachmentData.type);
    attachment.setFilename(attachmentData.filename);
    attachment.setDisposition(attachmentData.disposition);
    email.addAttachment(attachment);
  }

Mais en appelant sendEmail on nous dit sendgrid.Attachment is not a function (première ligne de la deuxième fonction).

J'ai imprimé l'objet sendgrid et il ressemble à ceci:

{ api_key: 'SG.DaV0L',
  api_user: null,
  options: 
   { uriParts: 
      { protocol: 'https',
        host: 'api.sendgrid.com',
        port: '',
        endpoint: '/api/mail.send.json' },
     uri: 'https://api.sendgrid.com/api/mail.send.json' },
  version: '1.9.2',
  Email: [Function: Email],
  smtpapi: [Function: smtpapi],
  send: [Function] }
  • L'exemple est-il faux?
  • Devrions-nous obtenir la classe d'aide à l'attachement d'une autre manière?

Merci,
Richard.

bug

Commentaire le plus utile

L'exemple de lien ne fonctionne pas.
Voici le nouveau lien:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

Tous les 10 commentaires

Compris après avoir lu le code. Cet exemple dans github est totalement faux. Devrait être comme ça:

addAttachment(email: any, attachmentData: any): void {    
  email.addFile(attachmentData);
}

Merci @RichardJECooke ,

Nous étudierons plus en détail et corrigerons l'exemple. Merci d'avoir pris le temps de partager la solution!

Si vous nous envoyez un e-mail à [email protected] avec votre adresse postale et la taille de votre t-shirt, nous serions ravis de vous envoyer des cadeaux.

Merci!

Nous avons maintenant un exemple de pièce jointe ici: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#attachments

L'exemple de lien ne fonctionne pas.
Voici le nouveau lien:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

Salut, je sais que ce problème a été résolu, mais c'est plus un problème que j'ai rencontré en essayant d'envoyer des images intégrées à un utilisateur gmail.

J'ai trouvé quelques raisons pour lesquelles gmail ne rendrait pas les images en raison d'une sécurité supplémentaire qu'ils imposent, j'ai donc pensé utiliser le paramètre attachments pour ajouter un content_id et voir si cela fonctionne au lieu d'utiliser une balise src régulière.

Lorsqu'elle est envoyée, la grille d'envoi renvoie une mauvaise requête. Voici ma méthode.

J'encode le JPG comme ceci:

    let bitmap = fs.readFileSync(imageDir);
    imageBase64URL = new Buffer(bitmap).toString('base64');

Ensuite, je passe le JPG encodé dans le champ de contenu à l'intérieur de l'argument des pièces jointes:

mailer.send({
       to: '[email protected]',
       from: '[email protected]',
       subject: `You have been removed from ${house.name} by ${removerName}`,
       html: result,
       attachments: [
            {
               content: imageBase64URL,
               filename: 'cluttr-logo.jpg',
               contentId: 'cluttr-logo'
            },
       ]
});

Enfin, j'intègre mon CID comme ça dans mon fichier ejs:

html <img alt="Logo" src="cid:cluttr-logo" width="60" height="60"

J'espère que quelqu'un a une idée de ce que je fais mal. Merci.

Bonjour @ lvh1g15 ,

Je pense que vous devez ajouter un disposition: inline , comme ça .

Meilleures salutations,

Elmer

@thinkingserious : Salut, savez-vous comment envoyer une pièce jointe avec le modèle transactionnel?

@thinkingserious existe-t-il un moyen d'ajouter une pièce jointe URL à mon e-mail, quelles sont les autres façons d'ajouter une pièce jointe à mon e-mail. Impossible de trouver exactement un document décrivant le fonctionnement des pièces jointes sur Sendgrid.

Cordialement,
Mohit

@thinkingserious : Salut, savez-vous comment envoyer une pièce jointe avec le modèle transactionnel?

si vous utilisez l'API v3, venez d'ajouter une clé attachments . content doit être encodé en Base64

https://sendgrid.com/docs/API_Reference/Web_API_v3/Mail/index.html

email = {
   "from":{  
      "email":"[email protected]"
   },
   "personalizations":[  
      {  
         "to":[  
            {  
               "email" : "[email protected]"
            }
         ],
         "dynamic_template_data": {
         }
      }
   ],
   "attachments": [
       {
           "content": "",
           "filename" ""
       }
   ]
   "template_id":"someid"
}
Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

wooyah picture wooyah  ·  4Commentaires

Loriot-n picture Loriot-n  ·  4Commentaires

thinkingserious picture thinkingserious  ·  4Commentaires

amlcodes picture amlcodes  ·  4Commentaires

nicoasp picture nicoasp  ·  3Commentaires