1

S3 バケットに HTML ファイルをロードしました。このファイルは、電子メール本文のテンプレートとして使用するためのものです。

この質問の回答の 1 つ (ノード fs を使用して aws s3 バケットからファイルを読み取る) を使用して、バケットからファイルを取得しました。これで、HTML に変換し直す必要があるバッファ データがあるように見えます。または、その文字列バージョンでも問題ありません。これまでに試したことはうまくいきませんでした...

テンプレートを取得するコードは次のようになります。

async getEmailTemplate() {
    const s3 = new AWS.S3({ apiVersion: '2006-03-01' });
    const params = {
      Bucket: 'myBucket',
      Key: 'templates/email.html',
    };
    const template = await s3.getObject(params).promise();
    return template;
}

「テンプレート」が返すデータをログに記録すると、次のように表示されます... template.body.toString('latin1') のようなものが必要です...

console.log src/services/tests/unit/Controller.test.js:266
    {
      AcceptRanges: 'bytes',
      LastModified: 2020-05-28T19:36:23.000Z,
      ContentLength: 22745,
      ETag: '"1bcc123ba55b5b878109436c1274b94b"',
      ContentType: 'text/html',
      Metadata: {},
      Body: <Buffer 3c 21 44 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a 3c 68 74 6d 6c 20 78 6d 6c 6e 73 3a 76 3d 22 75 72 6e 3a 73 63 68 65 6d 61 73 2d 6d 69 63 72 6f 73 6f ... 22695 more bytes>
    }

違いが生じる場合に備えて、テンプレートには ${data.firstName} のような js テンプレート リテラルが含まれています。現在、テンプレートが `` で囲まれた javascript ファイルにハードコードされている場合、電子メールは正しく入力され、送信されます。しかし、代わりに外部ソースからテンプレートをプルするようにコードを更新しようとしています。

私の質問を読んでくれてありがとう...誰か私に提案がありますか? :)

4

1 に答える 1

1

「body」を「Body」に変更すると機能するはずです。これは、あなたのものとほとんど同じで、正常に機能している古いコードです。

 let { Body } = await s3.getObject(params).promise();
 return Body.toString(encoding)
于 2020-05-28T21:35:55.660 に答える