Frappe Fab Graph Mail
Frappe app to support mail management via Microsoft Graph API
- Author: fabricatorsltd
- Repository: https://github.com/fabricatorsltd/frappe-fab-graph-mail
- GitHub stars: 0
- Forks: 0
- License: AGPL-3.0
- Category: Integrations
- Maintenance: Actively Maintained
- Frappe versions: v16
Install Frappe Fab Graph Mail
bench get-app https://github.com/fabricatorsltd/frappe-fab-graph-mail
Add the Frappe Gems badge to your README
Maintain Frappe Fab Graph Mail? Paste this into your README:
[](https://frappegems.com/gems/apps/fabricatorsltd/frappe-fab-graph-mail)
About Frappe Fab Graph Mail
Fab Graph Mail
Receive Frappe / Helpdesk email through the Microsoft Graph API using an app-only (client-credentials) identity, instead of IMAP.
Microsoft keeps restricting IMAP/POP and basic auth on Exchange Online. Graph is
the supported path for unattended mailbox access. This app fetches the raw
message from Graph and feeds it into Frappe's existing inbound pipeline
(InboundMail.process()), so threading, deduplication, attachments and target
document creation (HD Ticket via append_to) behave exactly as with IMAP. Graph
is only the transport.
Requirements
- An Azure app registration with the Microsoft Graph application permission
Mail.ReadWrite, admin consent granted. No redirect URI (client-credentials). NoNew-ServicePrincipal/ mailbox PowerShell needed (that is the IMAP path). - A Frappe Connected App holding the app's
client_id,client_secretand the tenanttoken_uri. The Connected App's own scope is irrelevant: the client requestshttps://graph.microsoft.com/.defaultexplicitly, so one app registration can also serve other integrations.
Configuration
On the target Email Account:
Connected App: the Connected App above.Receive via Microsoft Graph: on.Enable Incoming: off, so the core IMAP scheduler ignores the account.Append To: the target doctype (e.g.HD Ticket).Email Address: the mailbox to poll (shared mailboxes work, no licence required).
Graph Delta Link is maintained automatically; clear it to re-sync from
scratch.
How it runs
A scheduled job (*/5) polls every Graph-enabled Email Account with a Graph
delta query, so only changed messages are fetched. The delta cursor advances
only when every message in the batch was ingested; failures are isolated per
message and retried next run, and Frappe's Message-ID dedup makes reprocessing
safe. Outbound mail is out of scope: send through a normal SMTP account or relay.
Documentation
docs/operator-guide.md -- Azure app, Connected App, Email Account, and why
Graph is used instead of IMAP.
Installation
cd $PATH_TO_YOUR_BENCH
bench get-app $URL_OF_THIS_REPO --branch version-16-fab
bench install-app fab_graph_mail
License
agpl-3.0
Related Integrations apps for Frappe & ERPNext
- Insights — Open Source Business Intelligence Tool
- Raven — Simple, open source team messaging platform
- Frappe Whatsapp — WhatsApp cloud integration for frappe
- Frappe Assistant Core — Infrastructure that connects LLMs to ERPNext. Frappe Assistant Core works with the Model Context Protocol (MCP) to expose ERPNext functionality to any compatible Language Model
- Biometric Attendance Sync Tool — A simple tool for syncing Biometric Attendance data with your ERPNext server
- Frappe React Sdk — React hooks for Frappe
- Frappe Js Sdk — TypeScript/JavaScript library for Frappe REST API
- Mcp — Frappe MCP allows Frappe apps to function as MCP servers