Skip to main content

How to Send an Email in Power Automate

· 6 min read
Jagdish Kumawat
Founder @ Dewiride

The Office 365 Outlook action Send an email (V2) sends an email from a flow. Fill in To, Subject and Body, with dynamic content wherever the email needs a value from the flow. It's sent from the mailbox of the account behind the action's connection.

Microsoft's Office 365 Outlook connector reference describes it in one line: This operation sends an email message.

The example is the approval flow of the Overtime Timesheet app, which tells the person who logged overtime whether it was approved, by whom, and with what comment.

Prerequisites​

Step 1: Add the Action and a Connection​

Add an action, search for Send an email (V2), and choose it under Office 365 Outlook. The first time, it asks for a connection. I named it Overtime Timesheet Outlook, kept Office 365 (sign in as user), and selected Sign in:

The Create connection pane for Send an email (V2) with Connection name Overtime Timesheet Outlook, Authentication Type Office 365 (sign in as user), Sign in to create a connection to Office 365 Outlook., and a Sign in button

The account that signs in is the one the email comes from. I named the action Tell the employee.

Step 2: Address It​

To is the trigger's Created By Email, the person who logged the overtime:

Tell the employee → To (Code view)
@triggerBody()?['Author/Email']

Step 3: Write the Subject​

Plain text with values from earlier actions:

Tell the employee → Subject
Overtime @{outputs('Record_the_decision')?['body/Status/Value']}: @{outputs('Shift_date')}, @{outputs('Hours_worked_out')} hours

Step 4: Write the Body​

Body is a rich text box: each line you type becomes a paragraph, and dynamic content goes where the values belong:

Tell the employee → Body
Hello [Created By DisplayName],
Your overtime on [Shift date], [Shift times], was [Status Value] by [DecisionBy].
Hours: [Hours worked out]
Department: [Department]
Comment: [ApproverComment]
You can see all your entries on the My overtime screen of the Overtime Timesheet app.

The square brackets stand for tokens. In the designer, the Compose outputs showed as tokens named Body:

The Tell the employee pane: To set to Created By Email; Subject Overtime, the Status Value token, a colon, two Body tokens and hours; a Body box with Hello and the Created By Displ… token, Your overtime on two Body tokens, was Status Value by DecisionBy, Hours with a Body token, Department with the Department token, Comment with the ApproverComm… token, and the line about the My overtime screen; Importance Normal; and Connected to Office 365 Outlook.

Code view shows which outputs they are, and that each line is an HTML paragraph:

Tell the employee → Code view (Body, first two paragraphs)
<p class="editor-paragraph">Hello @{triggerBody()?['Author/DisplayName']},</p><p class="editor-paragraph">Your overtime on @{outputs('Shift_date')}, @{outputs('Shift_times')}, was @{outputs('Record_the_decision')?['body/Status/Value']} by @{outputs('Record_the_decision')?['body/DecisionBy']}.</p>

The Result​

Aisha Khan's overtime was approved by Olivia Bennett, and the email arrived a few seconds after Olivia answered:

An email from Admin User to Aisha Khan with the subject Overtime Approved: Saturday 07/11/2026, 4.00 hours, reading Hello Aisha Khan, Your overtime on Saturday 07/11/2026, 07:00 to 11:00, was Approved by Olivia Bennett., Hours: 4.00, Department: Emergency Department, Comment: Approved. Thank you for staying on., and You can see all your entries on the My overtime screen of the Overtime Timesheet app.

A rejection reads the same way, with the approver's reason as the comment:

An email from Admin User to Maya Patel with the subject Overtime Rejected: Saturday 07/11/2026, 3.75 hours, saying it was Rejected by Daniel Brooks, Hours: 3.75, Department: Radiology, and Comment: Please add which MRI list you covered and who asked you to stay.

The emails came from Admin User, the account behind the connection. In production, connect with a mailbox meant for the app, so replies don't go to a person.

Common Mistakes​

MistakeWhat happensDo this instead
Connecting with your own accountEvery email comes from you, and replies come to youA mailbox meant for the app
UTC times in the emailAn hour off in the UK summerConvert them first (How to Convert UTC to Local Time in Power Automate with convertFromUtc)
Sending before the decision is savedThe email can say something the list doesn'tSend after Update item

Troubleshooting​

SymptomLikely causeFix
The email comes from the wrong personThe connection's accountChange the connection
Tokens named Body you didn't expectThe designer's name for Compose outputsCheck Code view
Everything on one lineLines typed without EnterPut each line in its own paragraph

FAQ​

Can it send from a shared mailbox?​

Office 365 Outlook has a separate action for that, Send an email from a shared mailbox (V2). This flow doesn't use it.

Does the person need a license to receive it?​

No. Anyone with a mailbox can receive it; only the account that sends it needs the connection.

Conclusion​

Send an email (V2) sends from the connection's mailbox: To from dynamic content, a subject and a body with the flow's values, one paragraph per line. In the approval flow, it tells the person what was decided, by whom, and why.

Additional Resources​