I understand what is happening ..
I see in your Inject node that you first construct the msg with the email information and then read the file ..
the file in node this way would replace the msg.payload
.. which in your demo flow i dont see one btw
with the Buffer data of the file.
So to solve this, first read the file and then with a Change node prepare the msg for the Email node
In the example i also show how to properly format the array needed for the attachments (using a Jsonata Expression) and the order of making the msg is important as to not destroy the msg.payload
coming from the File in node.
Demo Flow
[{"id":"f7366b8d3eb03c4d","type":"file in","z":"54efb553244c241f","name":"","filename":"c:/share/test.txt","filenameType":"str","format":"","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":440,"y":3240,"wires":[["1cb19a19fa8e8212"]]},{"id":"2a50a132098fe514","type":"inject","z":"54efb553244c241f","name":"","props":[{"p":"to","v":"","vt":"date"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":210,"y":3240,"wires":[["f7366b8d3eb03c4d"]]},{"id":"a7b8946fd38e2823","type":"debug","z":"54efb553244c241f","name":"to Email node","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":860,"y":3240,"wires":[]},{"id":"1cb19a19fa8e8212","type":"change","z":"54efb553244c241f","name":"","rules":[{"t":"set","p":"to","pt":"msg","to":"manjunath.s@delmontefoods.in","tot":"str"},{"t":"set","p":"topic","pt":"msg","to":"Email Subject","tot":"str"},{"t":"set","p":"attachments","pt":"msg","to":"[\t {\t \"filename\": \"dt_report.csv\",\t \"content\": payload\t }\t]","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"This is an email with an attachment from Node-red","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":660,"y":3240,"wires":[["a7b8946fd38e2823"]]}]