以前の記事で、OpenBlocksにUSBカメラ―の画像を添付するNode-REDフローを、http requestノードで送る方法を解説しました。
そのままメール送信ノードに宛先を入力した状態であれば問題ないのですが、メール宛先や本文などをmsg.toやmsg.discriptionなどで送ろうとするとうまく動かない症状が発生しました。
具体的にうまく動かない症状は
1.画像ファイルが添付されない
2.メール本文が空になる
というものでした。
USB CAMERAで遅れてhttp requestで送れない原因
USB CAMERAから出力されるPayloadとhttp requestで出力されるPayloadを比較したところ、
http requestの方は上記のheadersをはじめ、USB CAMERAからは出力されないいくつかのデータがあることがわかりました。
どうやらいくつかの余計なmsgがあるとうまく動かないようです。
解決方法
解決方法はhttp requestノード(上図ではUSB CAMERAという名前)から出力されるメッセージをfunctionノードで削除しました。
具体的には画像のデータとしてmsg.payloadにbufferが入るので、それだけを残し、全体のメッセージはnewMsgという新しいmsgオブジェクトを作成する方法です。
動作確認
この方法で検証、無事にUSB CAMERAノードで作成していたフローと同じように、添付画像ファイル+本文+題名で送ることができました。
まとめ
以上、「USB CAMERAノードをhttp requestにしたらメール添付の画像が送れなくなった件(Node-RED)」についてご紹介しました。
OpenBlocksを使ったNode-REDを使ったアプリケーションの開発、サポートなどお話がありましたら、ぜひ、気軽に声をかけてください。