2016-12-29 1 views
1

私は現在、smtpTransportを使用して電子メールで送信できるように、ファイルストリームにhtmlデータを設定しようとしています。私はejsを使用しようとしましたが、私が見ているほとんどすべての例では、ejs.renderを使用してコンテンツを表示していますが、それをさらに文字列として送信しようとしています。私はメールチンパンジーのようなものを使って手動でやりたいのですが、まだ役に立たないものは何も見つかりませんでした。コンテキストについては、ユーザーが何かを購入してアイテムをテーブルに取り込むと、領収書メールを作成しようとしています。 EJS外の別のプラットフォームとしての使用に私は開いているどのように表示するのではなく、投稿用にノード内のhtmlデータを動的に取り込むことができますか?

router.post('/placeorder', function(req, res) { 
    var orderInfo = req.body; 

    var delivery = orderInfo.deliveryDate.split("00:00:00")[0] + " from " + orderInfo.deliveryTime; 

    //Email buyer receipt 
    fs.readFile('buyer_receipt.html',function (err, data){ 
     if (err) { 
      console.log(err); 
     } else { 
      var renderedHtml = ejs.render(data, {cart: orderInfo.cart, subtotal: orderInfo.subtotal, fee: orderInfo.fee, total: orderInfo.total, deliveryInfo: delivery}); 

      smtpTransport.sendMail({ 
       from: "Test <[email protected]>", 
       to: orderInfo.user.user.ownerName + " <" + orderInfo.user.user.email +">", 
       subject: "Thanks for your order!", 
       html: renderedHtml 
      }, function(error, response){ 
       if(error) { 
        console.log(error); 
       } else { 
        console.log("Mail sent: " + response.message); 
       } 
      }); 
    } 
}); 

:「:this.templateText.replace関数エラーされていない例外TypeError」ここで私はEJSを使用しますが、取得しようとしてきたコードですよくこれを解決するEJSとCrocodileJSためEmailTemplatesを使用し

+0

はパグhttp://stackoverflow.com/questions/別名ヒスイを使用した例であります21654051/how-to-send-an-html-page-in-node-in-nodejs/21654249#21654249 – Ryan

答えて

0

コメントvaribleカートに代わるejs.render使用data.replace、小計、料金など

0

エラーTypeError: this.templateText.replace is not a function errorが発生します。fs.readFileは、コールバックdataにローバッファを返します。あなたはfs.readFileに2番目の引数としてエンコーディングを渡した場合、コールバックdataは文字列になりますとejsはもう文句はありません。ここに

fs.readFile('buyer_receipt.html', 'utf-8', function (err, data) { 
    // 'utf-8' encoding specified so now data is a string instead of a raw buffer 
}) 
関連する問題