Sending Issues
"Permission denied when sending"
Cause: User lacks SendAs permission on the mailbox in Microsoft 365.
Solution:
- Go to Exchange Admin Center
- Navigate to Recipients → Mailboxes
- Select the shared mailbox
- Delegation → Send As → Add the user
"Microsoft account not connected" warning
Cause: User hasn't connected their Microsoft 365 account.
Solution:
- Go to My Profile → Mail Pro tab
- Click Connect Mailbox
- Complete the OAuth flow
Email stuck in outbox
Cause: OAuth token expired or revoked.
Solution:
- Disconnect Microsoft account
- Reconnect and re-authorize
Sync Issues
Emails not syncing
Checklist:
- If the missing mail is not a reply, Sync Other Email is on
- Mailbox Owner is set
- On Microsoft 365: the owner has connected; on Gmail and IMAP/SMTP: the address has its own account with Test Connection green
- Notification mailbox exists (required for incoming sync)
"0 mailbox(es)" in logs
Cause: Mailbox configuration incomplete.
Solution: Switch on Sync Other Email or Sync Sent Items, and on Microsoft 365 set the Owner.
Reply threading not working
Cause: Original email wasn't synced, so conversationId is missing.
Threading uses two methods:
- In-Reply-To header - Standard email threading
- Microsoft conversationId - Fallback when headers unavailable
Solution: Ensure historical emails are synced by setting a Sync Start Date before the original conversation.
Duplicate emails created
Cause: Email synced before deduplication data was stored.
Solution: The system uses Message-ID headers to prevent duplicates. If duplicates occur, check that the original message is indexed under the Message-ID the provider sent it with (developer mode → model pan.mail.message.ref, one row per Message-ID a message is known under).
Authentication Issues
OAuth callback error
Possible causes:
- Redirect URI mismatch in Azure app registration
- Client secret expired
- Permissions not granted
Solution:
- Verify redirect URI:
https://your-domain.com/microsoft_oauth/callback - Check client secret expiration in Azure Portal
- Ensure admin consent is granted for API permissions
Token refresh failing
Cause: Refresh token expired (90 days of inactivity) or user revoked access.
Solution: User needs to reconnect their Microsoft account.
Getting Help
If issues persist:
- Check Odoo logs for
[Outgoing Mail]and[Incoming Mail]entries - Verify Azure app permissions and admin consent
- Contact support at support@pantalytics.com