38 Commits

Author SHA1 Message Date
rustmailer 8d0b4919c4 feat: support email drafts - create & send
- OpenAPI & gRPC endpoints
- IMAP/Gmail API/Graph API implementations
2026-07-20 20:56:51 +08:00
rustmailer ce527d3025 Update license headers and copyright year to 2025-2026 2026-03-10 01:40:50 +08:00
rustmailer f379beb182 feat(grpc): add tag_messages support for message tagging via gRPC 2026-03-05 11:42:29 +08:00
rustmailer a6854396be feat(graph): support sending, replying, and forwarding emails 2026-02-04 00:37:07 +08:00
rustmailer 870d69f1de feat: feat: add Graph API compatibility for attachment download 2026-01-20 13:03:20 +08:00
rustmailer 906447bfc4 feat: add reply-all option to reply draft creation 2025-12-11 02:02:05 +08:00
rustmailer 49ba67a7d2 feat(thread): Add support for fetching thread lists and thread messages from remote in Gmail and Graph API 2025-12-03 02:43:02 +08:00
rustmailer c50bd26cd9 refactor: refactorparent_id to parent_name since the ID is internal and not safe or convenient to use as a number in external environments like JavaScript 2025-11-06 21:06:25 +08:00
rustmailer 8a2093a48f feat: make /create-mailbox compatible with Graph API, add parent_id field to payload 2025-11-06 20:44:41 +08:00
rustmailer 8bb5c0f7a7 feat: Make /move-messages and /copy-messages compatible with Graph API accounts 2025-11-05 11:54:35 +08:00
rustmailer 690c289aac feat: append-reply-to-draft supports Graph API
- Adjust AppendReplyToDraft request payload:
  * `mailbox` is only required for IMAP accounts; Graph API ignores it
  * Remove `draft_folder_path`; IMAP automatically uses `mailbox` attribute to filter
- API now returns `ReplyDraft` containing:
  * `id` of the created draft
  * mailbox name of the draft
2025-10-30 20:45:25 +08:00
rustmailer 64b57f4ac2 feat: add GraphAPI account support for message-content endpoint 2025-10-30 06:37:12 +08:00
rustmailer bbcc1348ff feat(graph): add Graph API support and GraphAPI account type 2025-10-28 19:39:49 +08:00
rustmailer 7522ffc289 feat: add folder_limit per account
- Add `folder_limit` field to account model
- Support limiting sync per folder/label for both IMAP and Gmail API accounts
- Ensures each folder/label syncs at most `folder_limit` messages
2025-10-18 15:23:58 +08:00
rustmailer bd6efb153c refactor: merge uid and mid into a single id field in EmailAddedToFolder and EmailEnvelopeV3 2025-10-08 12:05:31 +08:00
rustmailer 60041ee59f feat: unify UID/MID and UIDs/MIDs into single id/ids fields 2025-10-03 21:20:04 +08:00
rustmailer e6225d13bd fix(api): remove mailbox/label filtering so that get-thread-messages returns full conversation threads across INBOX and SENT 2025-10-01 00:55:01 +08:00
rustmailer 16c84abe67 refactor(list-messages): switch from page-based to cursor-based pagination
- Changed `list-messages` API from page/page_size to cursor/next_page_token
- Aligns pagination approach with Gmail API for easier integration
- Frontend updates to handle cursor-based navigation
2025-09-28 07:39:40 +08:00
rustmailer 08ef77c23c feat(gmail): make search API 2025-09-24 13:30:25 +08:00
rustmailer 40e8004f4f feat(mail): add raw email retrieval support for Gmail API accounts 2025-09-20 03:37:57 +08:00
rustmailer a54e3c9f18 feat(api): update reply and forward endpoints to support Gmail API accounts 2025-09-19 09:47:47 +08:00
rustmailer 05af9e82e9 feat(mailbox): extend MailboxTransferRequest for Gmail API support 2025-09-18 06:41:41 +08:00
rustmailer 16ccdb00b7 feat(mail): make message deletion API compatible with Gmail API 2025-09-15 06:44:15 +08:00
rustmailer a91cc813ca fix(mailbox): make create, delete, update folder/label APIs compatible with Gmail API 2025-09-10 16:38:42 +08:00
rustmailer 9d612ad81d Adapt Gmail API accounts: fetch email content & attachments, webhook for new emails, and frontend support 2025-09-08 11:03:00 +08:00
rustmailer a849c20d97 feat: add support for creating reply drafts in Gmail API accounts 2025-09-04 04:22:50 +08:00
rustmailer 7411233b48 feat: Add Gmail API sync workflow and integrate related data models 2025-09-01 23:50:00 +08:00
rustmailer 694f6f412c fix(account): make incremental_sync_interval_sec required 2025-08-28 04:03:00 +08:00
rustmailer fd64acc24f feat(account): add MailerType to support Gmail API and other mailers
- Introduced `MailerType` enum in Account model
- Enables selection of different mailer backends (e.g., Gmail API)
2025-08-28 03:20:49 +08:00
rustmailer 071f2929f0 feat(oauth2): support external OAuth2 token upsert with optional refresh token
- Add `ExternalOAuth2Request` validation to ensure mutual dependency between
  `oauth2_id` and `refresh_token`.
- Upsert external OAuth2 tokens for an account:
  - If only `access_token` is provided, RustMailer stores it directly.
  - If both `oauth2_id` and `refresh_token` are provided, RustMailer can refresh
    the access token using stored client credentials.
- Update REST API endpoint to `configure_external_oauth2` with proper OpenAPI docs.
- Add gRPC `ExternalOAuth2Request` message and corresponding `UpsertExternalOAuth2Token` RPC.
2025-08-18 00:33:50 +08:00
rustmailer c2996d9e39 feat(api): add HTTP and gRPC endpoints for appending a reply draft email
- Added REST endpoint `POST /append-reply-to-draft/:account_id` that creates a reply draft linked to the original email thread with appropriate headers (`References`, `In-Reply-To`).
- Added equivalent gRPC method for creating and appending reply drafts.
2025-08-12 21:31:06 +08:00
rustmailer 7ba24b45b2 feat: add email thread related APIs and data structures
- Add two new APIs to list email threads and fetch all messages within a thread
- Create a new email thread table to store thread information
- Implement method to extract thread_id from emails to support thread association queries
2025-08-10 05:11:41 +08:00
rustmailer 76139344fb chore(legal): add copyright/license headers to all source files 2025-07-29 02:02:08 +08:00
rustmailer c46b41b657 feat: add email-based message search API (OpenAPI + gRPC) with new index table
- Added unified search interface to query messages by email address
- Implemented both OpenAPI and gRPC endpoints
- Introduced new index table to optimize email-based lookups
2025-07-26 04:18:35 +08:00
rustmailer e3cbc7f4cc feat: enable proxy support (HTTP and SOCKS5); webhook now supports configurable proxy 2025-07-23 03:32:10 +08:00
rustmailer 4e80c6d979 fix: align forward params with backend, use Option<bool> for default handling 2025-07-22 20:54:30 +08:00
rustmailer 59cff28625 docs: add comments to rustmailer.proto 2025-07-20 23:13:52 +08:00
rustmailer 0044f37d7b feat: initial commit 2025-07-17 22:49:42 +08:00