Action: Send Mail in Rich Forms and Action Links

Action: Send Mail in Rich Forms and Action Links

Send Mail action allows dynamically sending emails from your SharePoint site to any email address.  

Example:



Configurations are available for actions that use the Microsoft Graph Send Mail API. 

Note:  In order to use the Send Mail action in Rich Forms and Action Links you have to approve Microsoft Graph 'Mail.Send' delegated permission for the SharePoint Online Web Client Extensibility. This should be done once per tenant by a tenant admin.  
To approve Microsoft Graph 'Mail.Send' delegated permission please run the PowerShell script below. 


$msGraphAppId = "00000003-0000-0000-c000-000000000000"
$scopeMailSend = "Mail.Send"

$spOnlineWebClientExtensibilityAppId = "08e18876-6177-487e-b8b5-cf950c1e598c" # SharePoint Online Web Client Extensibility
$resourceGrant = $null

# Prompt to install the required modules if not yet installed
if ($null -eq (Get-Module -ListAvailable -Name Microsoft.Graph.Applications) -or $null -eq (Get-Module -ListAvailable -Name Microsoft.Graph.Identity.SignIns)) {
  $response = Read-Host -Prompt "Running this script requires Microsoft.Graph modules that are not yet installed. Install now? (Y/N)"
  if ($response -eq "Y") {
    if ($null -eq (Get-Module -ListAvailable -Name Microsoft.Graph.Applications)) {
      Install-Module -Name Microsoft.Graph.Applications -Scope CurrentUser -Force -AllowClobber
    }
    if ($null -eq (Get-Module -ListAvailable -Name Microsoft.Graph.Identity.SignIns)) {
      Install-Module -Name Microsoft.Graph.Identity.SignIns -Scope CurrentUser -Force -AllowClobber
    }
  }
  else {
    Write-Host "The script cannot continue without the Microsoft.Graph modules. Exiting." -ForegroundColor Red
    exit
  }
}

Connect-MgGraph -Scopes "Application.ReadWrite.All", "Directory.ReadWrite.All" -NoWelcome

try {
    # Get the SPFx Service Principal
    $spfx = Get-MgServicePrincipal -Filter "appid eq '$spOnlineWebClientExtensibilityAppId'" -ErrorAction Stop
    # Get the endpoint service princpal (required to identify the object ID)
    $resource = Get-MgServicePrincipal -Filter "appid eq '$msGraphAppId'" -ErrorAction Stop

      # Get the scopes granted for the endpoint
      $spfxGrants = Get-MgServicePrincipalOauth2PermissionGrant -ServicePrincipalId $spfx.Id -ErrorAction Stop
      foreach ($spfxGrant in $spfxGrants) {
        if ($spfxGrant.ResourceId -eq $resource.Id) {
          $resourceGrant = $spfxGrant
          break
        }
      }
      # If some scopes have already been granted for the endpoint, we check if the scope we are about to add already exists there
      if ($null -ne $resourceGrant) {
        if ($resourceGrant.Scope | Select-String $scopeMailSend -Quiet ) {
          Write-Host "$($resource.DisplayName) $scopeMailSend has already been granted for SharePoint Online Web Client Extensibility" -ForegroundColor Green
          continue
        }
        # The scope does not yet exist; add it to the property and update it
        $resourceGrant.Scope += " $scopeMailSend"
        Update-MgOauth2PermissionGrant -OAuth2PermissionGrantId $resourceGrant.Id -Scope $resourceGrant.Scope -ErrorAction Stop | Out-Null
      }      
      # Otherwise, create a new object with the scope 
      else {
        $params = @{
          "clientId"    = $spfx.id
          "consentType" = "AllPrincipals"
          "resourceId"  = $resource.id
          "scope"       = $scopeMailSend
        }
        New-MgOauth2PermissionGrant -BodyParameter $params -ErrorAction Stop | Out-Null
      }
      Write-Host "$($resource.DisplayName) $scopeMailSend granted for SharePoint Online Web Client Extensibility." -ForegroundColor Green
}
catch {
  Write-Host "The following error occurred: $_.Exception" -ForegroundColor Red
}
finally{
    $_ = Disconnect-MgGraph # Assigning the output to a variable hides it from the terminal
}


To configure the action Send Mail additional properties should be specified:

Configuration

Property

Required

Type

Description

From

no

String

An email address or an expression to be evaluated as an email address to be used as the sender. If left blank, it will take the current user as the sender's name.

If From option is specified then all SharePoint users must have at least one of Send on Behalf or Send As permissions granted to the sender mailbox. Also the the sender's email address should be an Microsoft organizational account.

To

yes

String

Receiver(s) of the email: User or expression to be evaluated as an email address. To send it to multiple users use a ";" (semicolon) to separate the email addresses.

CC

no

String

User or expression to be evaluated as an email address that will receive a copy of the message. To send it to multiple users use a ";" (semicolon) to separate the email addresses.

BCC

no

String

User or expression to be evaluated as an email address that will receive a copy of the message and are concealed from the other recipients. To send it to multiple users use a ";" (semicolon) to separate the email addresses.

Subject

yes

String

Subject of the email to be sent.

Body

no

String

Message to be sent. You can use HTML tags to format the body of the email.

Send As Text

no

Boolean

If enabled, email is sent in plain text otherwise it is sent as HTML mail.


    • Related Articles

    • Send internal email action retirement

      Send internal email action retirement Microsoft announced the retirement SharePoint SendEmail API, known as SP.Utilities.Utility.SendEmail, which is utilized to send internal SharePoint emails. It is getting retired on October 31, 2025. This means ...
    • Action: Send email

      Send email action with extended configuration allows dynamically sending emails from your SharePoint site to any email address. For more information about Action Builder read Action Builder introduction article. Note 1: In order to use the Send email ...
    • Action Builder Introduction

      The Teamsware Studio Action Builder is a tool that allows you to specify actions which are executed in consecutive order. You can build powerful workflows triggered from a form button, on form load, from a list view, scheduled or event triggered on a ...
    • Action: Create invite

      Create invite action allows you to create an invitation for the external user. The invitation is used to add external users to the organization. On invitation creation, the invited user is added as an external user to the Microsoft Entra ID. To ...
    • Action: Invite guest user

      Invite guest user action allows you to create an invitation for the external user. The invitation is used to add external users to the organization. On invitation creation, the invited user is added as an external user to the Microsoft Entra ID. To ...