At line 1 removed 3 lines |
Based on Microsoft Graph REST API ( for more info see : [https://docs.microsoft.com/en-us/graph/api/resources/message?view=graph-rest-1.0]).\\ |
|
!!!Microsoft Graph Application registration |
At line 5 changed one line |
It requires Microsoft Graph Application registration. Start at the Microsoft azure portal:\\ |
Based on __Microsoft Graph REST API__ ( More info: [Message Resource Type Link| https://docs.microsoft.com/en-us/graph/api/resources/message?view=graph-rest-1.0]).\\ |
\\ |
---- |
__⚠️ Proxy Configuration:__ If your server accesses the internet through a proxy, make sure to whitelist the following domains to allow authentication and Microsoft Graph API access:\\ |
•__login.microsoftonline.com__\\ |
•__graph.microsoft.com__\\ |
---- |
\\ |
!1. Microsoft Graph Application Registration\\ |
\\ |
It requires Microsoft Graph Application registration. Start at the Microsoft Azure portal:\\ |
At line 8 removed one line |
__Application registration__: Go to the App registrations and click on New registration:\\ |
At line 10 changed one line |
[attachments|new_registration.png]\\ |
Open the __Microsoft Azure Portal__: [Link|https://azure.microsoft.com/en-us/features/azure-portal]\\ |
At line 12 changed one line |
Name it. Select the Multitenant and personal Microsoft accounts type. The redirect url must ends with :register_microsoft_graph_api/. Then click on register.\\ |
__Application registration:__ Navigate to App registrations in the Azure Portal. Click on __New registration__ to create a new application.\\ |
At line 14 changed one line |
[attachments|register_app.png] |
[SharePoint Integration|new_registration.png]\\ |
At line 16 changed one line |
__App permissions__ :\\ |
In the Redirect URI section, for Platform configuration, select __Web__. The Redirect URL must end with __"register_microsoft_graph_api/"__.\\ |
At line 18 changed one line |
MicrosoftMails task support OAuth 2.0 client credential grant. It requests the permissions from a directory admin. Go to the API permission. Click on Add permission, select Microsoft Graph.Choose "Application permissions".\\ |
{{{ |
|
http://localhost:9090/register_microsoft_graph_api/ |
or |
https://your.crushftp.domain.com/register_microsoft_graph_api/ |
|
}}}\\ |
At line 32 added 11 lines |
__Secret key__: A new client secret must be created. Go to Certificates & secrets, and generate a new client secret by clicking on New client secret. ⚠️ Ensure you copy over the __value__ immediately!\\ |
\\ |
[SharePoint Integration/new_secret.png]\\ |
\\ |
[SharePoint Integration/secret_value.png]\\ |
\\ |
\\ |
__API permissions__ :\\ |
\\ |
Go to __API permissions__, click __Add a permission__, and select __Microsoft Graph__. Then choose __Application permissions__ and add the following permissions:\\ |
\\ |
At line 25 changed one line |
To grant permissison for CrushFTP click on "Get Admin consent" button. Make sure your Webinterface host and port match with the host and port specified in App registration's redirect url.\\ |
Grant __Admin consent__ for the newly added permission.\\ |
\\ |
[SharePoint Integration/app_permission_admin_consent.png]\\ |
\\ |
Alternatively, you can perform this action via __CrushFTP__: Click the __Get Admin Consent__ button. __⚠️ Note:__ Make sure the WebInterface host and port match the host and port specified in the App Registration’s __Redirect URL__.\\ |
\\ |
[attachments|admin_consent.png]\\ |
[attachments|client_id.png]\\ |
|
\\ |
You need to log in with an __admin account__ to grant permissions for CrushFTP.\\ |
⚠️ Any changes made to __API permissions__ in the __Azure App Registration__ require new admin consent.\\ |
\\ |
---- |
!2. Task Settings\\ |
\\ |
[attachments|mail_task.png]\\ |
\\ |
__Client ID__ : See at App Registration -> Overview -> Application (client) ID\\ |
__Client Secret__: See at App Registration -> Manage -> Certificates & secrets) make sure to copy the value field, not the ID\\ |
__Tenant__: See at App Registration -> Overview -> Directory (tenant) ID\\ |
\\ |
|
__Folder__: Specifies the mail folder to process. Supports subfolders using the format Folder/Subbolder/SubSubFolder\\ |
__Search query__: Defines the search criteria for messages. It uses a specific syntax called Keyword Query Language ([KQL|https://learn.microsoft.com/en-us/sharepoint/dev/general-development/keyword-query-language-kql-syntax-reference]). In this language, the asterisk (*) wildcard is only supported for prefix matching (e.g., subject:report*). It does not have a character or function for suffix (*report) or contains (*report*) matching. Refer to the Microsoft Graph Search Parameters for syntax and options. More info: [Microsoft Graph Search Parameter Link|https://learn.microsoft.com/en-us/graph/search-query-parameter?tabs=http].\\ |
__Examples__: |
{{{ |
from |
|
Searches the display name and email address of the sender. |
Example: from:"John Doe" or from:john.doe@example.com |
}}}\\ |
{{{ |
to |
|
Searches the display names and email addresses in the To: line. |
Example: to:marketing |
}}}\\ |
{{{ |
cc |
|
Searches the display names and email addresses in the Cc: line. |
Example: cc:jane.doe@example.com |
}}}\\ |
{{{ |
bcc |
|
Searches the display names and email addresses in the Bcc: line. |
Example: bcc:"Project Leads" |
}}}\\ |
{{{ |
recipients |
|
Searches across all recipient fields (to, cc, and bcc) simultaneously. |
Example: recipients:management |
}}}\\ |
{{{ |
subject |
|
Searches the subject line of the message. For phrases, use double quotes. |
Example: subject:"Q4 Financial Report" |
}}}\\ |
{{{ |
body |
|
Searches the content of the message body. |
Example: body:invoice or body:"Action Required" |
}}}\\ |
{{{ |
attachment |
|
Searches the file names of attachments. |
Example: attachment:presentation.pptx |
}}}\\ |
{{{ |
sent |
|
Searches for messages sent on a specific date. You can use date keywords or specific dates in YYYY-MM-DD, YYYY-MM-DDThh:mm:ss, YYYY-MM-DDThh:mm:ssZ, or YYYY-MM-DDThh:mm:ssfrZ format. |
Example: sent:yesterday or sent:2025-10-14 |
}}}\\ |
{{{ |
received |
|
Searches for messages received on a specific date. |
Example: received:last week or received:>=2025-10-01 |
}}}\\ |
{{{ |
hasattachment |
|
Searches for messages that have at least one attachment. This is a boolean search. |
Example: hasattachment:true |
}}}\\ |
{{{ |
importance |
|
Searches for messages with a specific importance level. |
Example: importance:high |
}}}\\ |
{{{ |
isread |
|
Searches for messages based on their read status. |
Example: isread:false |
}}}\\ |
{{{ |
size |
|
Searches for messages based on their size in bytes. You can use range operators (>, <, >=, <=). |
Example: size:>5000000 (for messages larger than 5MB) |
}}}\\ |
\\ |
__After processing copy message to this mailbox__: Specifies the destination mailbox for processed messages. Subfolders are also supported.\\ |
\\ |
__Variable patterns:__\\ |
\\ |
a.) Message-related variables:\\ |
\\ |
{{{ |
{mail_id},{mail_hangeKey},{mail_internetMessageId},{mail_parentFolderId},{mail_conversationId} |
|
{mail_from},{mail_sender},{mail_to},{mail_cc},{mail_bcc},{mail_reply_to} |
|
{mail_subject}, {mail_body_content},{mail_body_type} |
|
{mail_createdDateTime}, {mail_lastModifiedDateTime},{mail_sentDateTime}, {mail_receivedDateTime} |
|
{mail_hasAttachments},{mail_importance},{mail_isRead},{mail_isDraft}, |
}}}\\ |
\\ |
b.) Attachment-related variables:\\ |
\\ |
{{{ |
{id}, {contentType}, {size}, {name}, {lastModifiedDateTime} |
}}}\\ |
\\ |
For alternatives, see the general POP/IMAP Task description: [POP/IMAP Task – CrushFTP Documentation Link| https://www.crushftp.com/crush11wiki/Wiki.jsp?page=CrushTask#section-CrushTask-POP3IMAP]\\ |