Outlook Mail Plus Documentation
repository·main·Indexed 23 days ago
https://github.com/zeropointsix/outlookemailplusA specialized email management system optimized for high-frequency registration and verification workflows. It features an intelligent email pool with project isolation, automated verification code extraction via regex, and a Chrome/Edge browser extension to streamline the claim-extract-complete lifecycle. Supports Gmail, QQ, 163, custom IMAP servers, and Cloudflare Worker temporary emails, with integration for Telegram notifications and Microsoft OAuth token configuration.
What's inside Outlook Mail Plus
- OutlookMail Plus is a specialized mailbox manager designed for individuals and teams focused on registration and verification workflows. Unlike general-purpose email clients, it is optimized for speed in completing signup flows by providing features like one-click mailbox address copying, automated verification code/link extraction via regex, and automation-friendly APIs for batch registration.
Overview of the OAuth Token Acquisition Tool
mainThe OAuth Token Acquisition Tool is a standalone utility within Outlook Email Plus designed to help users interactively log in to Microsoft accounts to obtain a
refresh_token. It operates in a separate browser window (opened viawindow.open()) to avoid disrupting the main application's SPA state.Key features include:
- OAuth2 + PKCE: Uses Authorization Code Flow with PKCE (S256). In the current implementation,
client_secretis disabled to support a compatible account import mode. - Smart Callbacks: Automatically handles redirects in standard environments, with a manual fallback (pasting the callback URL) for remote deployments like Docker or reverse proxies.
- One-Click Writing: Once the token is acquired, users can instantly write it to an existing account or create a new one.
- Configuration Persistence: OAuth parameters are saved to the server's
Settingstable, allowing for cross-device synchronization.
- OAuth2 + PKCE: Uses Authorization Code Flow with PKCE (S256). In the current implementation,
Overview of Outlook Mail Plus
mainOutlook Mail Plus is a specialized email account manager designed for individuals and teams focused on registration and verification workflows. Unlike general-purpose email clients, it optimizes for minimizing friction during sign-up processes.
Key Features:
- Registration Optimized: Features one-click email copying and automated verification code/link extraction using regex.
- Broad Import Support: Supports Gmail, QQ, 163, custom IMAP servers, and built-in Cloudflare Worker temporary emails.
- Automation Ready: Provides external APIs for batch registration and an email pool system with project isolation.
- Notification Support: Integrates with Telegram for automated alerts when important emails arrive.
- Browser Extension: Offers a Chrome/Edge (Manifest V3) extension to automate the claim-extract-complete lifecycle without switching tabs.
Overview of OutlookMail Plus
mainOutlookMail Plus is a mailbox manager specifically optimized for registration and verification workflows. Unlike standard email clients, it focuses on speeding up signup flows by providing tools to quickly fetch verification emails and extract codes or links using regex. It is designed for both individuals and teams handling high-volume registration tasks.Overview of the OutlookMail Plus Browser Extension
mainThe OutlookMail Plus browser extension (Manifest V3) is a companion tool for Chrome and Edge. It provides a lightweight popup interface to manage the entire email lifecycle without injecting code into web pages.
Core Capabilities:
- Quick Access: Invoke a minimal popup via keyboard shortcuts or icon clicks.
- Lifecycle Management: Perform the full flow of
Claim Email→Use→Get Verification Code/Link→Complete/Release. - Data Handling: Results (emails, codes, links) are provided via one-click copy.
- Persistence: Claim history is stored locally for offline viewing.
- Theming: Supports dark/light mode synchronization with the main application.
Prerequisites:
- The main application must have
external poolenabled. - If using multiple API keys, the key must have
pool_accesspermissions.
Implement Temporary Mail Provider Plugin System
mainThis project implements a plugin architecture for temporary email providers. The system allows for dynamic registration, loading, and management of email providers via a registry and decorator pattern.
Core Architecture
- Registry Pattern: Uses a central
_REGISTRYto map provider names to their respective classes. - Decorator-based Registration: Providers are registered using the
@register_providerdecorator. - Layered Architecture: Follows a strict
Route → Controller → Service → Repositorypattern. Cross-layer calls are prohibited. - Plugin Lifecycle: Supports scanning plugin directories, hot-reloading (without container restart), installation, and uninstallation.
Technical Stack
- Backend: Python 3.11+, Flask 3.0+, SQLite (WAL)
- Frontend: Native JS, CSS using project design variables
- Deployment: Docker (requires volume mapping
./plugins:/app/pluginsfor persistence)
- Registry Pattern: Uses a central
Review the evolution of Outlook Email Plus capabilities
mainThe project has undergone significant evolution from v1.x to v2.x. Key milestones include:
- v1.2: UI global redesign and CI/CD improvements.
- v1.3: Unified multi-mailbox management.
- v1.4: Seamless account import/export migration.
- v1.5.x: Telegram real-time push, deduplication stability, and Microsoft Refresh Token rolling updates.
- v1.6.x: External API security layer and asynchronous
wait-messageprobing. - v1.8.0: Delivery of Mailbox Pool and External Pool APIs.
- v1.9.x: Bilingual interface, unified notification distribution, and frontend refactoring.
- v1.11 - v1.13: Platformization of temporary email, project isolation, and one-click hot updates.
- v1.15 - v1.19: AI CAPTCHA enhancement, OAuth Token tools, and Webhook support.
- v2.0.0: Official release of the Browser Extension.
- v2.1.0: Data overview dashboard and unified extraction pipeline observability.
Technical Goals for the Browser Extension Quick Operation Panel
mainThe Browser Extension Quick Operation Panel (target version v0.1.0) is designed to achieve the following:
- Local Installability: Supports loading via Developer Mode and future
.crxpackaging. - Dynamic Server Support: Enables cross-origin requests to any user-provided self-hosted address without Chrome interception.
- State Persistence: Maintains current tasks and history across Popup sessions.
- Popup Lifecycle Safety: Ensures data is not lost when the Popup is closed; tasks can be recovered upon reopening.
- Minimal Main App Impact: Requires only supplementary CORS source configuration without adding new interfaces or database changes.
- Local Installability: Supports loading via Developer Mode and future
Test execution strategy for Compact Mode Auto-Polling
mainThe testing for the Compact Mode Auto-Polling feature is organized into three hierarchical layers. To ensure full coverage, follow this execution order: first run the Python tests (Layers A and B), then run the Jest tests (Layer C).
Layer File Framework Test Objective A. Backend API Contract tests/test_compact_poll_settings.pyPython unittestValidates GET/PUT, field validation, defaults, and persistence for 3 settings fields. B. Frontend Contract tests/test_compact_poll_frontend_contract.pyPython unittestEnsures existence of HTML elements, JS variables, CSS classes, and i18n entries. C. JS Unit tests/compact-poll/compact-poll-engine.test.jsJest + jsdom Tests core polling engine logic (event triggering, re-entrancy prevention, timeouts, parallelism). Overview Dashboard Frontend Architecture
mainThe Data Overview Dashboard (replacing the old
page-dashboard) uses a 5-Tab structure. It utilizes existing CSS classes (settings-tab-nav,settings-tab,settings-tab-pane) with a.ov-*prefix for specialized styling. The UI follows an 'Apple-style glass card' design with rounded panels, soft shadows, and custom hover notes instead of native browser tooltips.Key Frontend Modules (
static/js/features/overview.js):initOverview(): Initializes tab switching and refresh button bindings.switchOverviewTab(tabId): Switches tabs and triggers lazy loading.loadOverviewTab(tabId): Orchestrates API requests and rendering for a specific tab.fetchOverviewData(tabId): Fetches data from/api/overview/*endpoints.renderDataCard(options): Renders glass-style data cards (title, badge, hover note, body).renderBarChart(container, data): Renders CSS-based bar charts (Tab 3).renderTimeline(container, events): Renders timeline items (Tab 5).
Loading & Caching Strategy:
- Initial Load: Entering the dashboard automatically loads the current tab and forces a fresh fetch from the backend.
- Lazy Loading: Other tabs are loaded only upon the first click and results are cached.
- Manual Refresh: The refresh button clears all tab caches and reloads the current tab.
- Event-Driven Updates: When a verification code extraction succeeds, the frontend emits an
overview-data-changedevent, which invalidates caches forsummary,verification, andactivity. If the overview page is currently visible, it triggers an immediate reload.
Understand the implementation requirements for Issue #55 (Batch Email Fetching)
mainIssue #55 refers to supporting the batch fetching of emails after selecting multiple accounts in Standard Mode.
Key Technical Context:
- Infrastructure exists: The project already supports multi-account selection in Standard Mode via
account-select-checkbox(rendered instatic/js/features/groups.js),selectedAccountIds(maintained instatic/js/main.js), and thebatchActionBar(intemplates/index.html). - Current Limitation: The existing email fetching logic is a single-account model.
static/js/features/accounts.jsusescurrentAccountto drive the email pane, andstatic/js/features/emails.jsusesloadEmails(email, forceRefresh)to fetch for a single address via the/api/emails/<email_addr>endpoint.
Implementation Strategy: Instead of refactoring the entire browsing model into a mixed multi-account list, the recommended approach is to enhance the Standard Mode batch actions to:
- Add a "Batch Fetch Emails" action to the
batchActionBar. - Reuse
selectedAccountIdsand existing batch interaction patterns. - Implement this as batch pre-fetching/warming of email caches or batch refreshing of the latest email status for selected accounts, while keeping the right-side email panel focused on single-account semantics.
- Infrastructure exists: The project already supports multi-account selection in Standard Mode via
Resolve Mailboxes using Mailbox Descriptors
mainThe system uses a
mailbox_resolverto abstract the difference between standard accounts (Outlook/IMAP) and temporary mailboxes. Instead of relying solely on theaccountstable, the reading logic uses amailbox descriptorto determine how to fetch messages.A mailbox descriptor follows this structure:
{ "kind": "account | temp", "email": "demo@example.com", "source": "outlook | imap | custom_temp", "status": "active", "read_capability": "graph | imap | temp_provider", "meta": {} }Reading Workflow:
- Call
mailbox_resolver.resolve_mailbox(email_addr). - If
kind == account: Use existinggraphorimapflows. - If
kind == temp: Use thetemp_mail_servicereading flow.
- Call