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
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
rustmailer
d9d0aa336d
feat: add a system config item 'rustmailer_oauth2_success_redirect'
2025-08-13 15:59:00 +08:00