Commit Graph

61 Commits

Author SHA1 Message Date
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 4c00e45657 refactor(gmail): switch Gmail account message deletion to batch API for efficiency 2025-09-24 13:29:49 +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 0a038ffe94 feat(gmail): add compatibility for Gmail API send message endpoint 2025-09-17 09:56:04 +08:00
rustmailer 453c799935 fix: date format error in gmail api query 2025-09-15 20:04:15 +08:00
rustmailer 16ccdb00b7 feat(mail): make message deletion API compatible with Gmail API 2025-09-15 06:44:15 +08:00
rustmailer 60f3eaf239 feat(gmail api): handle label change events in history callback 2025-09-14 17:11:09 +08:00
rustmailer b7245a302d fix: remove filtering of labels with MessageListVisibility=hide 2025-09-11 22:11:41 +08:00
rustmailer fa2ecf1867 chore: add debug logs for Gmail label synchronization 2025-09-11 21:27:07 +08:00
rustmailer c8f62e3a05 fix: gmail sync date format 2025-09-11 19:27:48 +08:00
rustmailer 851eb8743d chore: retry Gmail API requests on 400 FAILED_PRECONDITION errors 2025-09-11 05:54:56 +08:00
rustmailer cbdc64fe1b chore: Enhance Gmail message fetch, add retry, increase timeout, reduce concurrency 2025-09-11 02:49:27 +08:00
rustmailer 70f499d403 Fix: date parsing for non-standard Gmail Date headers 2025-09-11 02:47:51 +08:00
rustmailer 1f4d2294ad fix: use Some(account_id) instead of raw account_id when delete hook entity 2025-09-11 00:37:35 +08:00
rustmailer b5e7395fa7 fix: only call Gmail API when account updates sync_folders 2025-09-10 23:53:10 +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 a487565049 fix(sync_folders): correct folder update logic 2025-09-10 16:37:32 +08:00
rustmailer 34f9ea901c update main.rs add print info 2025-09-10 16:36:33 +08:00
rustmailer 5edbebfbf3 chore(disk cache): limit total cache items to 10000 2025-09-10 16:35:58 +08:00
rustmailer ee7f0673c7 fix: normalize URL-safe base64 to standard base64 when decoding 2025-09-09 04:18:51 +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 b5fba610d9 feat(search): unify search interface with Gmail API compatibility 2025-09-05 04:38:39 +08:00
rustmailer a849c20d97 feat: add support for creating reply drafts in Gmail API accounts 2025-09-04 04:22:50 +08:00
rustmailer 7926ba7a46 feat(gmail): add list_threads & get_thread_message support 2025-09-04 02:20:52 +08:00
rustmailer 54c6227114 chore(periodic-task): skip missed ticks on long executions 2025-09-04 01:24:00 +08:00
rustmailer 20e1a1cc4e refactor(gmail): update account sync logic and related files 2025-09-03 20:17:30 +08:00
rustmailer 21f4b05495 refactor(account): change deletion from async to sync 2025-09-03 20:16:26 +08:00
rustmailer 7411233b48 feat: Add Gmail API sync workflow and integrate related data models 2025-09-01 23:50:00 +08:00
rustmailer 4b44a38f80 fix: Use EventHooksKey::account_id instead of EventHooksKey::id in delete_impl 2025-09-01 23:48:26 +08:00
rustmailer 5851ef8e9b fix: Sync newly detected IMAP mailboxes according to configured time range 2025-09-01 23:46:47 +08:00
rustmailer 8b23ac1644 chore: increase OAuth2 token refresh interval from 15m to 45m 2025-08-30 12:58:07 +08:00
rustmailer 76d7d73f3f fix: skip mailbox sync when uid_validity is None 2025-08-29 14:32:38 +08:00
rustmailer 0dc9daeb6f fix(accounts): start sync task for IMAP/SMTP accounts 2025-08-28 15:38:58 +08:00
rustmailer d050fd2d98 update 2025-08-28 15:31: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 a9ef330418 feat(http-client): add shared HTTP client for reuse across the application 2025-08-26 15:32:28 +08:00
rustmailer 8942f9518e fix: allow set license when license expired 2025-08-24 23:53:52 +08:00
rustmailer df4f715d70 add some tests 2025-08-24 23:53:25 +08:00
rustmailer 07f7ebc0ed docs: fix misleading comment for use_proxy field 2025-08-21 00:30:51 +08:00
rustmailer eed988292a feat(auth): update login flow and add root password reset API & UI
- Changed login implementation to use plaintext password
- Added reset root password API endpoint integration
- Implemented UI for resetting root password with validation
2025-08-19 03:30:41 +08:00
rustmailer f838e66018 feat(email): add thread_id field to EmailAddedToFolder 2025-08-18 00:54:41 +08:00
rustmailer 1b8fc39037 fix(template): correct secondary index type 2025-08-18 00:36:07 +08:00
rustmailer 4c47bfe42c fix(mailbox): rebuild cache with early mailbox availability and error handling
- Batch insert remote mailboxes before full synchronization so that
  mailbox metadata is queryable as soon as possible.
- If synchronization of a mailbox fails, remove it to prevent
  stale or inconsistent local data.
2025-08-18 00:35:26 +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