Sendgrid-nodejs: Wie füge ich Anhänge hinzu?

Erstellt am 6. Sept. 2016  ·  10Kommentare  ·  Quelle: sendgrid/sendgrid-nodejs

Unsere E-Mails werden einwandfrei gesendet und wir möchten jetzt einen Anhang hinzufügen. Also haben wir dieses Beispiel kopiert: https://github.com/sendgrid/sendgrid-nodejs/blob/93763a74a85969382d59fcb3708d22051498f998/examples/helpers/mail/example.js

Und Code wie folgt gemacht:

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

Aber wenn wir sendEmail aufrufen, wird uns sendgrid.Attachment is not a function (erste Zeile der zweiten Funktion) mitgeteilt.

Ich habe das sendgrid-Objekt ausgedruckt und es sieht folgendermaßen aus:

{ 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] }
  • Ist das Beispiel falsch?
  • Sollten wir die Anhangshilferklasse auf andere Weise erhalten?

Dankeschön,
Richard.

bug

Hilfreichster Kommentar

Der Beispiellink funktioniert nicht.
Dies ist der neue Link:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

Alle 10 Kommentare

Herausgefunden nach dem Lesen des Codes. Dieses Beispiel in Github ist völlig falsch. Sollte so sein:

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

Danke @RichardJECooke ,

Wir werden weiter untersuchen und das Beispiel korrigieren. Vielen Dank, dass Sie sich die Zeit genommen haben, die Lösung zu teilen!

Wenn Sie uns eine E-Mail an [email protected] mit Ihrer Postanschrift und T-Shirt-Größe senden, senden wir Ihnen gerne einen Swag.

Vielen Dank!

Der Beispiellink funktioniert nicht.
Dies ist der neue Link:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

Hallo, ich weiß, dass dieses Problem geschlossen wurde, aber dies ist eher ein Problem, das ich hatte, als ich versuchte, eingebettete Bilder an einen Google Mail-Benutzer zu senden.

Ich habe einige Gründe gefunden, warum Google Mail aufgrund der zusätzlichen Sicherheit, die sie auferlegen, keine Bilder rendert. Daher dachte ich, ich würde den Parameter attachments verwenden, um eine content_id hinzuzufügen und zu prüfen, ob dies funktioniert, anstatt ein reguläres src-Tag zu verwenden.

Wenn es gesendet wird, gibt send grid eine fehlerhafte Anfrage zurück. Hier ist meine Methode.

Ich codiere das JPG wie folgt:

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

Dann übergebe ich das codierte JPG in das Inhaltsfeld innerhalb des Anhangsarguments:

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

Schließlich binde ich meine CID wie folgt in meine ejs-Datei ein:

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

Hoffentlich hat jemand einen Einblick in das, was ich falsch mache. Vielen Dank.

Hallo @ lvh1g15 ,

Ich glaube , Sie brauchen eine hinzuzufügen disposition: inline , wie so .

Mit besten Empfehlungen,

Elmer

@thinkingserious : Hallo, wissen Sie, wie man einen Anhang mit der Transaktionsvorlage sendet?

@thinkingserious Gibt es eine Möglichkeit, meiner E-Mail einen URL-Anhang hinzuzufügen ? Ich konnte kein Dokument finden, in dem angegeben ist, wie Anhänge in Sendgrid funktionieren.

Grüße,
Mohit

@thinkingserious : Hallo, wissen Sie, wie man einen Anhang mit der Transaktionsvorlage sendet?

Wenn Sie die v3-API verwenden, haben Sie einfach einen attachments -Schlüssel hinzugefügt. content muss Base64-codiert sein

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"
}
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

umarhussain15 picture umarhussain15  ·  3Kommentare

mikemaccana picture mikemaccana  ·  4Kommentare

thinkingserious picture thinkingserious  ·  4Kommentare

thinkingserious picture thinkingserious  ·  4Kommentare

danielflippance picture danielflippance  ·  4Kommentare