# Email the files attached to a SharePoint list item

> For the full documentation index, see https://250highstreet.com/llms.txt

> How to send the files attached to a SharePoint list item in one email with Power Automate: get the attachments, build one array, send once. With limits.

Short answer: use Get attachments, loop with Get attachment content, append each file to an array, then send one email outside the loop with that array as Attachments. If Send an email sits inside the loop, people get one email per file.

## What happens

Someone fills in a form. The form saves a row in a SharePoint list, with a few files attached. You want an email to go to a manager with those files. You build a flow, add a Send an email step and look for the attachments. They are not there. Or they are there, but the manager gets three emails for three files.

This happens because the list item and its files are stored in different ways. The item has columns. The files are attached to the item and are read by their own actions. The email step does not know about them until you hand them over. For where the files live, see "[Where SharePoint list attachments are stored, and when to use a library](/guides/where-do-sharepoint-list-attachments-go/)".

A Microsoft Q&A answer to a similar problem, a Power Apps form whose flow sent email without the files, suggests the same plan. Use the item trigger, get the attachments, collect them in an array and send one email.

## Signs this is happening to you

- The email arrives with no files.
- The email arrives with a file name but the file will not open.
- One item with three files sends three emails.
- It worked with the default SharePoint form and stopped after you built a custom form.

## What the connector pages say

These points come from Microsoft's connector pages. Exact names may differ in your screens.

- Get attachments returns the list of attachments for a list item. You give it the site address, the list name and the Id of the list item. Microsoft says you can add a Get attachment content step and use the file identifier from this action.
- Get attachment content returns the file contents using the file identifier. Microsoft says the contents can be copied somewhere else or used as an attachment. It needs the site address, list name, the item Id and the file identifier.
- Each item in the Get attachments result has an Id (the file identifier), an AbsoluteUri (a link to the attachment) and a DisplayName (the name).
- The SharePoint connector supports list item attachment sizes up to 90 MB.
- For Send an email (V2), the attachment fields are Name and Content (the key is ContentBytes). Both are required if you add an attachment.
- Microsoft's page for the Office 365 Outlook connector lists a maximum mail content length of 49 MB. It also notes that in some cases, sending multiple attachments with Send an email V2 can produce invalid files, and it suggests the array method in this guide as the workaround.
- Microsoft's page notes that each email counts as one API call per connection, even with several people in To, Cc or Bcc.

## Before you start

You need a SharePoint list with attachments turned on, and a flow that starts when an item is created or changed. Microsoft's pages do not describe which license your tenant needs for this. Check with your admin.

One setup note. Every list has a Title column, and it is required by default. If your list does not use it, rename it to something useful or turn off Require. If a flow creates items for you, a blank Title can make the create step fail, so check that first. If a flow updates the item, Update item asks for Title when Title is required, so fill it from the trigger.

Say your list is "Equipment requests" with these columns: Title, Requester, Manager email and Status. Status is a Choice column with the choices 1 New, 2 Approved and 3 Sent. The number prefix keeps your order, because a Choice column sorts by its text.

## Step 1. Start the flow when an item is created

1.  In Power Automate, choose Create, then Automated cloud flow.
2.  Pick the SharePoint trigger "When an item is created".
3.  Set the Site Address and the List Name.

A Microsoft Q&A answer says to use this item trigger and not a direct Power Apps trigger, because attachments are stored in SharePoint. One way to start is to test with a plain list item first, then add the custom form later.

## Step 2. Start an empty array

1.  Add the action "Initialize variable".
2.  Name it varAttachments.
3.  Set the Type to Array.
4.  Leave the value empty.

This variable is the group of files you will hand to the email step.

## Step 3. Get the attachments

1.  Add the SharePoint action "Get attachments".
2.  Set the same Site Address and List Name.
3.  For Id, pick the ID from the trigger's dynamic content.

The result is a list. Each entry is one attached file, with a file identifier and a display name.

## Step 4. Loop and fill the array

1.  Add "Apply to each". Select the result of Get attachments as the input.
2.  Inside the loop, add the SharePoint action "Get attachment content". Set the site address and list name. For Id, pick the trigger's ID. For File Identifier, pick the current attachment's Id.
3.  Still inside the loop, add "Append to array variable". Choose varAttachments.
4.  For the value, write an object with two fields. Name is the attachment's DisplayName. ContentBytes is the output of Get attachment content.

A Microsoft Q&A answer shows this shape: a Name field filled from the attachment's display name, and a ContentBytes field filled from the output of Get attachment content. Use the dynamic content picker to fill each field so you do not mistype a step name.

The loop only builds the array. It sends nothing.

## Step 5. Send one email, outside the loop

1.  Add the Outlook action "Send an email (V2)" after the loop, not inside it.
2.  Fill To, Subject and Body.
3.  Open the advanced options. Switch the Attachments field to the mode that takes an entire array.
4.  Pick varAttachments.

The Q&A answer describes the same step: Send an email (V2) outside the loop, with the Attachments field set to take the entire array.

For a mail that comes from a shared mailbox instead of your own, see "[Send Power Automate emails from a shared mailbox](/guides/power-automate-send-email-from-shared-mailbox/)".

## Step 6. Test it

1.  Add a new list item with two files of different types, such as a PDF and a picture.
2.  Run the flow, or wait for the trigger.
3.  Open the run history. Check that Get attachments shows two entries and the loop ran twice.
4.  Open the email. Count the files and open each one.

If the manager gets two emails, the Send step is inside the loop. Move it out.

## Only one file to send

If you only ever need one file, you can skip the group of files and read the first entry of the Get attachments result, then use its Id for Get attachment content. You still pass Name and ContentBytes to the email in an Attachments array of one. If an item has no files, that first entry does not exist, so add a Condition that checks the list is not empty. This is our advice, not a Microsoft rule.

## The reverse: save email attachments to a list item

To go the other way, from an email into a list item, see "[Save email attachments to SharePoint automatically](/guides/power-automate-save-email-attachments-to-sharepoint/)".

## If the files are missing

In a follow-up comment, the same answerer gives two ideas for a custom Power Apps form.

- Check that the Attachments control is unlocked and that its Items property is set to the selected list item attachments.
- As a temporary workaround, add a Delay action of 5 to 10 seconds right after the trigger, so the files have time to save before the flow reads them.

The Delay is a workaround from a Microsoft Q&A answer, not a fix from Microsoft's documentation. Microsoft's pages do not describe how long a file takes to save. One way to start is to try a short delay and see if it helps. This is our advice, not a Microsoft rule.

## Keep the email from getting too big

Mail has a size limit. Microsoft's page lists 49 MB for mail content. It also lists 500 MB of content per connection every 5 minutes for send actions. Files in a list can be up to 90 MB each. So a list item with a few large files can be too big for one email.

Another way to share large files is a link. Each attachment has an AbsoluteUri, which is a link to the attachment. You can put that link in the email body instead. People then need access to the SharePoint site to open it. Microsoft's pages do not describe how link permissions work for each person, so test with someone who has the access you expect.

## What to avoid

- Do not put Send an email (V2) inside the loop. You get one email per file.
- Do not skip the empty array. The email step needs a group, not a single file.
- Do not type the field names by hand if the picker offers them. A small typo gives a blank file name.
- Do not attach very large files and expect them to arrive. Check the size limits first.
- Do not send secrets in the email. Attachments in email can be forwarded.
- Do not test only with one file. Test with two, so you see the loop work.

## Honest limits

This setup sends the files that exist when the flow reads them. If someone adds a file later, a flow that runs only on create will not see it. If you use the "item created or modified" trigger instead, the flow can run more than once for one item, which sends repeat emails. For that problem, see "[Power Automate sends the same email two or three times](/guides/power-automate-email-sent-multiple-times/)". One way to start is to add a Status column and only send when Status is 2 Approved, then set it to 3 Sent after the email. In that Update item step, fill Title from the trigger, since Title is required by default. This is our advice, not a Microsoft rule.

## When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: \$5,000 for one, built in 2 weeks. See "[What a SharePoint tracker costs to build](/guides/what-a-sharepoint-tracker-costs/)". Bring one example of the problem to a free call.

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: [Tools I built](/portfolio/)

## FAQ

### Why does my email have no attachments?

The email step only sends what you give it. Get the attachments, get each file's content, add it to an array and set the email's Attachments field to that array. If you use a custom form, a Microsoft Q&A answer also suggests checking that the Attachments control is unlocked.

### Why do I get one email per file?

Send an email (V2) is inside the Apply to each loop. Move it after the loop so it runs once.

### What is the biggest file I can send?

Microsoft's SharePoint connector page says list item attachments are supported up to 90 MB. Its Outlook connector page lists "Maximum mails content length (in MB)" as 49. Your mail system may set lower limits, so check with your admin.

### How do I attach several files to one email?

Append each file as Name and ContentBytes to an array variable inside the loop, then give that array to the Attachments field of one Send an email (V2) after the loop. Microsoft's Outlook connector page describes this array method as the workaround when multiple attachments produce invalid files.

### How do I save email attachments to a list item instead?

That is the reverse flow and has its own steps. See "[Save email attachments to SharePoint automatically](/guides/power-automate-save-email-attachments-to-sharepoint/)".

## Sources

- [Microsoft Learn, SharePoint connector reference (Get attachments, Get attachment content)](https://learn.microsoft.com/en-us/connectors/sharepointonline/)
- [Microsoft Learn, Office 365 Outlook connector reference (Send an email V2)](https://learn.microsoft.com/en-us/connectors/office365/)
- [Microsoft Q&A, How can I connect my Power App form with Power Automate to send a mail with attachment](https://learn.microsoft.com/en-us/answers/questions/5764067/how-can-i-connect-my-power-app-form-with-power-aut)

## Related guides

- [Send an approval with attachments from a SharePoint list](/guides/power-automate-approval-with-attachments/)
- [Create a SharePoint list item from an email](/guides/power-automate-create-list-item-from-email/)
- [Where SharePoint list attachments are stored, and when to use a library](/guides/where-do-sharepoint-list-attachments-go/)

Source: https://250highstreet.com/guides/power-automate-email-list-item-attachments/
