* 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 }
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. |