To send multiple files in one single email, you must first collect the attachments into an array. If you put Send an email (V2) inside an Apply to each, Power Automate will send one email per file.
Recommended pattern
Initialize an array variable
Add Initialize variable at the start of the flow.
Name: varAttachments
Type: Array
Loop through the files
Use your trigger or action such as Get files or When a file is created.
Add an Apply to each loop.
Inside the loop:
Use Get file content
Add Append to array variable
Append attachments using this structure
{
"Name": "<File name with extension>",
"ContentBytes": "<File content>"
}
Make sure ContentBytes uses File Content, not file ID or path.
Send the email outside the loop
Add Send an email (V2) after the loop finishes.
Open Advanced options and switch the Attachments field to entire array, then pass varAttachments.
Why this works
- Sends only one email
- Fully dynamic number of attachments
- No Graph API or custom code required
Common issues
- Empty attachments usually mean the append step is not inside the loop
- Corrupted files mean ContentBytes is not mapped correctly
- Watch Outlook attachment size limits when sending many or large files
✅ If this answer helped resolve your issue, please mark it as Accepted so it can help others with the same problem.
👍 Feel free to Like the post if you found it useful.