Sendgrid-nodejs: 添付ファイルを追加するにはどうすればよいですか?

作成日 2016年09月06日  ·  10コメント  ·  ソース: sendgrid/sendgrid-nodejs

メールは正常に送信されているので、添付ファイルを追加します。 そのため、この例をコピーしました: https

そして、そのようなコードを作成しました:

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

しかし、 sendEmailを呼び出すと、 sendgrid.Attachment is not a function (2番目の関数の最初の行)と表示されます。

sendgridオブジェクトを印刷すると、次のようになります。

{ 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] }
  • 例は間違っていますか?
  • 添付ファイルヘルパークラスを別の方法で取得する必要がありますか?

ありがとうございました、
リチャード。

bug

最も参考になるコメント

サンプルリンクが機能していません。
これは新しいリンクです:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

全てのコメント10件

コードを読んだ後に理解しました。 githubのその例は完全に間違っています。 次のようになります。

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

ありがとう@RichardJECooke

さらに調査し、例を修正します。 ソリューションを共有するために時間を割いていただきありがとうございます!

郵送先住所とTシャツのサイズを[email protected]宛てにメールで送信する場合は、

ありがとう!

ここに添付ファイルの例があります: https

サンプルリンクが機能していません。
これは新しいリンクです:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

こんにちは、私はこの問題が解決されたことを知っていますが、これは私がGmailユーザーに埋め込み画像を送信しようとしたときに私が抱えていた問題です。

Gmailが課す追加のセキュリティのために画像をレンダリングしない理由がいくつかわかったので、通常のsrcタグを使用する代わりに、attachmentsパラメーターを使用してcontent_idを追加し、それが機能するかどうかを確認すると思いました。

送信されると、sendgridは不正なリクエストを返します。 これが私の方法です。

私は次のようにJPGをエンコードします:

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

次に、エンコードされたJPGをattachments引数内のコンテンツフィールドに渡します。

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

最後に、CIDをそのようにejsファイルに埋め込みます。

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

うまくいけば、誰かが私が間違っていることについて何らかの洞察を持っています。 ありがとう。

こんにちは@ lvh1g15

私はあなたが追加する必要があると思うdisposition: inlineそのように

敬具、

エルマー

@thinkingserious :こんにちは、トランザクションテンプレートを使用して添付ファイルを送信する方法を知っていますか?

@thinkingseriousには、メールにURL添付ファイルを追加する方法がありますが、メールに添付ファイルを追加する他の方法は何

よろしく、
モヒット

@thinkingserious :こんにちは、トランザクションテンプレートを使用して添付ファイルを送信する方法を知っていますか?

v3 APIを使用している場合は、 attachmentsキーを追加しただけです。 contentは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"
}

サンプルリンクが機能していません。
これは新しいリンクです:
https://github.com/sendgrid/sendgrid-nodejs/blob/master/use-cases/attachments.md

新しい新しいリンク: https

このページは役に立ちましたか?
0 / 5 - 0 評価