react-native-email-imap-smtp 0.3.31 → 0.3.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/README.md +1 -1
  2. package/android/src/main/java/com/margelo/nitro/emailimapsmtp/EmailImapSmtp.kt +125 -56
  3. package/lib/typescript/server/src/imapHandler.d.ts +5 -0
  4. package/lib/typescript/server/src/imapHandler.d.ts.map +1 -1
  5. package/lib/typescript/server/src/index.d.ts.map +1 -1
  6. package/lib/typescript/server/src/smtpHandler.d.ts.map +1 -1
  7. package/lib/typescript/src/EmailImapSmtp.nitro.d.ts +2 -0
  8. package/lib/typescript/src/EmailImapSmtp.nitro.d.ts.map +1 -1
  9. package/lib/typescript/src/types.d.ts +2 -0
  10. package/lib/typescript/src/types.d.ts.map +1 -1
  11. package/nitrogen/generated/android/c++/JSmtpServerInfo.hpp +8 -3
  12. package/nitrogen/generated/android/c++/JVariant_ImapServerInfo_SmtpServerInfo.hpp +1 -0
  13. package/nitrogen/generated/android/kotlin/com/margelo/nitro/emailimapsmtp/SmtpServerInfo.kt +9 -4
  14. package/nitrogen/generated/ios/EmailImapSmtp-Swift-Cxx-Bridge.hpp +15 -15
  15. package/nitrogen/generated/ios/swift/SmtpServerInfo.swift +19 -1
  16. package/nitrogen/generated/shared/c++/SmtpServerInfo.hpp +7 -2
  17. package/package.json +1 -1
  18. package/server/lib/imapHandler.d.ts +5 -0
  19. package/server/lib/imapHandler.d.ts.map +1 -1
  20. package/server/lib/imapHandler.js +68 -22
  21. package/server/lib/imapHandler.js.map +1 -1
  22. package/server/lib/index.d.ts.map +1 -1
  23. package/server/lib/index.js +24 -9
  24. package/server/lib/index.js.map +1 -1
  25. package/server/lib/smtpHandler.d.ts.map +1 -1
  26. package/server/lib/smtpHandler.js +76 -8
  27. package/server/lib/smtpHandler.js.map +1 -1
  28. package/server/src/imapHandler.ts +72 -23
  29. package/server/src/imapflow.d.ts +31 -0
  30. package/server/src/index.ts +50 -16
  31. package/server/src/smtpHandler.ts +310 -242
  32. package/src/EmailImapSmtp.nitro.ts +2 -0
  33. package/src/types.ts +2 -0
@@ -32,6 +32,7 @@
32
32
 
33
33
  #include <string>
34
34
  #include <vector>
35
+ #include <optional>
35
36
 
36
37
  namespace margelo::nitro::emailimapsmtp {
37
38
 
@@ -43,10 +44,11 @@ namespace margelo::nitro::emailimapsmtp {
43
44
  std::string serverName SWIFT_PRIVATE;
44
45
  std::vector<std::string> capabilities SWIFT_PRIVATE;
45
46
  std::vector<std::string> supportedAuthMethods SWIFT_PRIVATE;
47
+ std::optional<double> maxMessageSize SWIFT_PRIVATE;
46
48
 
47
49
  public:
48
50
  SmtpServerInfo() = default;
49
- explicit SmtpServerInfo(std::string serverName, std::vector<std::string> capabilities, std::vector<std::string> supportedAuthMethods): serverName(serverName), capabilities(capabilities), supportedAuthMethods(supportedAuthMethods) {}
51
+ explicit SmtpServerInfo(std::string serverName, std::vector<std::string> capabilities, std::vector<std::string> supportedAuthMethods, std::optional<double> maxMessageSize): serverName(serverName), capabilities(capabilities), supportedAuthMethods(supportedAuthMethods), maxMessageSize(maxMessageSize) {}
50
52
 
51
53
  public:
52
54
  friend bool operator==(const SmtpServerInfo& lhs, const SmtpServerInfo& rhs) = default;
@@ -64,7 +66,8 @@ namespace margelo::nitro {
64
66
  return margelo::nitro::emailimapsmtp::SmtpServerInfo(
65
67
  JSIConverter<std::string>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "serverName"))),
66
68
  JSIConverter<std::vector<std::string>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "capabilities"))),
67
- JSIConverter<std::vector<std::string>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "supportedAuthMethods")))
69
+ JSIConverter<std::vector<std::string>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "supportedAuthMethods"))),
70
+ JSIConverter<std::optional<double>>::fromJSI(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "maxMessageSize")))
68
71
  );
69
72
  }
70
73
  static inline jsi::Value toJSI(jsi::Runtime& runtime, const margelo::nitro::emailimapsmtp::SmtpServerInfo& arg) {
@@ -72,6 +75,7 @@ namespace margelo::nitro {
72
75
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "serverName"), JSIConverter<std::string>::toJSI(runtime, arg.serverName));
73
76
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "capabilities"), JSIConverter<std::vector<std::string>>::toJSI(runtime, arg.capabilities));
74
77
  obj.setProperty(runtime, PropNameIDCache::get(runtime, "supportedAuthMethods"), JSIConverter<std::vector<std::string>>::toJSI(runtime, arg.supportedAuthMethods));
78
+ obj.setProperty(runtime, PropNameIDCache::get(runtime, "maxMessageSize"), JSIConverter<std::optional<double>>::toJSI(runtime, arg.maxMessageSize));
75
79
  return obj;
76
80
  }
77
81
  static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) {
@@ -85,6 +89,7 @@ namespace margelo::nitro {
85
89
  if (!JSIConverter<std::string>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "serverName")))) return false;
86
90
  if (!JSIConverter<std::vector<std::string>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "capabilities")))) return false;
87
91
  if (!JSIConverter<std::vector<std::string>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "supportedAuthMethods")))) return false;
92
+ if (!JSIConverter<std::optional<double>>::canConvert(runtime, obj.getProperty(runtime, PropNameIDCache::get(runtime, "maxMessageSize")))) return false;
88
93
  return true;
89
94
  }
90
95
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-email-imap-smtp",
3
- "version": "0.3.31",
3
+ "version": "0.3.32",
4
4
  "description": "The best of imap and smtp client of react native",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -18,6 +18,11 @@ export declare function moveEmails(sessionId: string, uids: number[], destinatio
18
18
  export declare function copyEmails(sessionId: string, uids: number[], destinationMailbox: string): Promise<void>;
19
19
  export declare function deleteEmails(sessionId: string, uids: number[]): Promise<any>;
20
20
  export declare function expunge(sessionId: string): Promise<void>;
21
+ /** 判断错误是否为连接断开类(message + code),供路由层决定是否重连重试 */
22
+ export declare function isConnectionError(err: any): boolean;
23
+ /** 会话客户端是否已死(补充判断:message 未命中但客户端确实断了,也应重连重试)。
24
+ * 会话不存在或已被显式断开 → 返回 false(不该自动重连)。 */
25
+ export declare function isSessionClosed(sessionId: string): boolean;
21
26
  export declare function fetchAttachment(sessionId: string, uid: number, partId: string): Promise<any | null>;
22
27
  export declare function fetchAllAttachments(sessionId: string, uid: number): Promise<any[]>;
23
28
  export declare function startIdle(sessionId: string, callback: (notification: any) => void): void;
@@ -1 +1 @@
1
- {"version":3,"file":"imapHandler.d.ts","sourceRoot":"","sources":["../src/imapHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imapHandler.d.ts","sourceRoot":"","sources":["../src/imapHandler.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,8 @@ exports.moveEmails = moveEmails;
23
23
  exports.copyEmails = copyEmails;
24
24
  exports.deleteEmails = deleteEmails;
25
25
  exports.expunge = expunge;
26
+ exports.isConnectionError = isConnectionError;
27
+ exports.isSessionClosed = isSessionClosed;
26
28
  exports.fetchAttachment = fetchAttachment;
27
29
  exports.fetchAllAttachments = fetchAllAttachments;
28
30
  exports.startIdle = startIdle;
@@ -42,6 +44,12 @@ function getSession(sessionId) {
42
44
  }
43
45
  return s;
44
46
  }
47
+ /** 取会话并确保连接存活:若已断开则静默重建新 ImapFlow 并重选邮箱,再返回(静默重连入口) */
48
+ async function ensureSession(sessionId) {
49
+ const s = getSession(sessionId);
50
+ await ensureConnected(s);
51
+ return s;
52
+ }
45
53
  function flagsSetToArray(flags) {
46
54
  if (!flags)
47
55
  return [];
@@ -212,7 +220,7 @@ async function disconnect(sessionId) {
212
220
  }
213
221
  // ─── 列出邮箱 ──────────────────────────────────────────────
214
222
  async function listMailboxes(sessionId) {
215
- const s = getSession(sessionId);
223
+ const s = await ensureSession(sessionId);
216
224
  const list = await s.client.list();
217
225
  return list.map((mbox) => ({
218
226
  name: mbox.name,
@@ -224,7 +232,7 @@ async function listMailboxes(sessionId) {
224
232
  }
225
233
  // ─── 选择邮箱 ──────────────────────────────────────────────
226
234
  async function selectMailbox(sessionId, mailbox, readOnly) {
227
- const s = getSession(sessionId);
235
+ const s = await ensureSession(sessionId);
228
236
  const lock = await s.client.getMailboxLock(mailbox);
229
237
  try {
230
238
  const mbox = await s.client.mailboxOpen(mailbox, { readOnly });
@@ -266,7 +274,7 @@ async function selectMailbox(sessionId, mailbox, readOnly) {
266
274
  }
267
275
  // ─── 刷新邮箱 ──────────────────────────────────────────────
268
276
  async function refreshMailbox(sessionId) {
269
- const s = getSession(sessionId);
277
+ const s = await ensureSession(sessionId);
270
278
  const mailbox = s.currentMailbox ?? 'INBOX';
271
279
  const lock = await s.client.getMailboxLock(mailbox);
272
280
  try {
@@ -307,7 +315,7 @@ async function refreshMailbox(sessionId) {
307
315
  }
308
316
  // ─── 获取文件夹列表 ─────────────────────────────────────────
309
317
  async function fetchFolders(sessionId) {
310
- const s = getSession(sessionId);
318
+ const s = await ensureSession(sessionId);
311
319
  const list = await s.client.list();
312
320
  const folders = list.map((mbox) => ({
313
321
  name: mbox.name,
@@ -346,23 +354,23 @@ async function fetchFolders(sessionId) {
346
354
  }
347
355
  // ─── 创建/删除/重命名/订阅文件夹 ──────────────────────────
348
356
  async function createFolder(sessionId, folderName) {
349
- const s = getSession(sessionId);
357
+ const s = await ensureSession(sessionId);
350
358
  await s.client.mailboxCreate(folderName);
351
359
  }
352
360
  async function deleteFolder(sessionId, folderName) {
353
- const s = getSession(sessionId);
361
+ const s = await ensureSession(sessionId);
354
362
  await s.client.mailboxDelete(folderName);
355
363
  }
356
364
  async function renameFolder(sessionId, oldName, newName) {
357
- const s = getSession(sessionId);
365
+ const s = await ensureSession(sessionId);
358
366
  await s.client.mailboxRename(oldName, newName);
359
367
  }
360
368
  async function subscribeFolder(sessionId, folderName) {
361
- const s = getSession(sessionId);
369
+ const s = await ensureSession(sessionId);
362
370
  await s.client.mailboxSubscribe(folderName);
363
371
  }
364
372
  async function unsubscribeFolder(sessionId, folderName) {
365
- const s = getSession(sessionId);
373
+ const s = await ensureSession(sessionId);
366
374
  await s.client.mailboxUnsubscribe(folderName);
367
375
  }
368
376
  // ─── 获取邮件 ──────────────────────────────────────────────
@@ -408,7 +416,7 @@ function decodePartText(buf, charset) {
408
416
  }
409
417
  }
410
418
  async function fetchEmails(sessionId, options) {
411
- const s = getSession(sessionId);
419
+ const s = await ensureSession(sessionId);
412
420
  const mailbox = options.mailbox ?? 'INBOX';
413
421
  const lock = await s.client.getMailboxLock(mailbox);
414
422
  try {
@@ -533,7 +541,7 @@ async function fetchEmails(sessionId, options) {
533
541
  }
534
542
  // ─── 按UID获取单封邮件 ─────────────────────────────────────
535
543
  async function fetchEmailByUID(sessionId, uid) {
536
- const s = getSession(sessionId);
544
+ const s = await ensureSession(sessionId);
537
545
  for await (const msg of s.client.fetch({ uid: String(uid) }, {
538
546
  uid: true,
539
547
  flags: true,
@@ -551,7 +559,7 @@ async function fetchEmailByUID(sessionId, uid) {
551
559
  }
552
560
  // ─── 搜索邮件 ──────────────────────────────────────────────
553
561
  async function searchEmails(sessionId, criteria) {
554
- const s = getSession(sessionId);
562
+ const s = await ensureSession(sessionId);
555
563
  const mailbox = criteria.mailbox ?? 'INBOX';
556
564
  const lock = await s.client.getMailboxLock(mailbox);
557
565
  try {
@@ -687,7 +695,7 @@ async function searchEmails(sessionId, criteria) {
687
695
  }
688
696
  // ─── 标记操作 ──────────────────────────────────────────────
689
697
  async function markAsRead(sessionId, uids, silent) {
690
- const s = getSession(sessionId);
698
+ const s = await ensureSession(sessionId);
691
699
  // 批量:一条 range 命令完成所有 UID,避免逐封往返
692
700
  await s.client.messageFlagsAdd({ uid: uids.join(',') }, ['\\Seen'], {
693
701
  silent,
@@ -695,7 +703,7 @@ async function markAsRead(sessionId, uids, silent) {
695
703
  });
696
704
  }
697
705
  async function markAsFlagged(sessionId, uids, flagged) {
698
- const s = getSession(sessionId);
706
+ const s = await ensureSession(sessionId);
699
707
  const range = { uid: uids.join(',') };
700
708
  if (flagged) {
701
709
  await s.client.messageFlagsAdd(range, ['\\Flagged'], { uid: true });
@@ -705,19 +713,19 @@ async function markAsFlagged(sessionId, uids, flagged) {
705
713
  }
706
714
  }
707
715
  async function moveEmails(sessionId, uids, destinationMailbox) {
708
- const s = getSession(sessionId);
716
+ const s = await ensureSession(sessionId);
709
717
  await s.client.messageMove({ uid: uids.join(',') }, destinationMailbox, {
710
718
  uid: true,
711
719
  });
712
720
  }
713
721
  async function copyEmails(sessionId, uids, destinationMailbox) {
714
- const s = getSession(sessionId);
722
+ const s = await ensureSession(sessionId);
715
723
  await s.client.messageCopy({ uid: uids.join(',') }, destinationMailbox, {
716
724
  uid: true,
717
725
  });
718
726
  }
719
727
  async function deleteEmails(sessionId, uids) {
720
- const s = getSession(sessionId);
728
+ const s = await ensureSession(sessionId);
721
729
  // 批量:一次 messageDelete 完成;失败则整批计入 failed(不再逐封往返)
722
730
  try {
723
731
  await s.client.messageDelete({ uid: uids.join(',') }, { uid: true });
@@ -732,7 +740,7 @@ async function deleteEmails(sessionId, uids) {
732
740
  }
733
741
  }
734
742
  async function expunge(sessionId) {
735
- const s = getSession(sessionId);
743
+ const s = await ensureSession(sessionId);
736
744
  const mailbox = s.currentMailbox ?? 'INBOX';
737
745
  const lock = await s.client.getMailboxLock(mailbox);
738
746
  try {
@@ -756,7 +764,17 @@ async function ensureConnected(s) {
756
764
  const alive = !client.isClosed && client.state !== client.states.LOGOUT;
757
765
  if (alive)
758
766
  return;
759
- // 连接已关闭 → 重建新实例
767
+ // 连接已关闭 → 重建新实例。并发安全:多个请求同时发现断开时
768
+ // 共享同一个重连 Promise(s.reconnecting),只真正重连一次,避免重连风暴。
769
+ if (s.reconnecting) {
770
+ return s.reconnecting;
771
+ }
772
+ s.reconnecting = doReconnect(s).finally(() => {
773
+ s.reconnecting = null;
774
+ });
775
+ return s.reconnecting;
776
+ }
777
+ async function doReconnect(s) {
760
778
  if (!s.config) {
761
779
  throw new Error('IMAP connection lost, but no config to reconnect');
762
780
  }
@@ -777,6 +795,16 @@ async function ensureConnected(s) {
777
795
  logger: false,
778
796
  });
779
797
  await newClient.connect();
798
+ // 重连期间若会话已被显式断开,则放弃这条新连接
799
+ if (!s.connected) {
800
+ try {
801
+ await newClient.logout();
802
+ }
803
+ catch {
804
+ /* ignore */
805
+ }
806
+ return;
807
+ }
780
808
  s.client = newClient;
781
809
  s.connected = true;
782
810
  // 重建后需重新选中原邮箱(download/fetch 依赖当前 mailbox)
@@ -785,6 +813,24 @@ async function ensureConnected(s) {
785
813
  }
786
814
  console.log('[ensureConnected] reconnected, mailbox:', s.currentMailbox);
787
815
  }
816
+ // ─── 断线判定(供路由层决定是否自动重试)──────────────────
817
+ /** 判断错误是否为连接断开类(message + code),供路由层决定是否重连重试 */
818
+ function isConnectionError(err) {
819
+ if (!err)
820
+ return false;
821
+ const msg = String(err?.message ?? '').toLowerCase();
822
+ const code = String(err?.code ?? '').toLowerCase();
823
+ const re = /connection closed|connection lost|disconnected|socket closed|socket hang up|econnreset|etimedout|econnrefused|broken pipe|server closed|closed connection|network error|operation timed out/i;
824
+ return re.test(msg) || re.test(code);
825
+ }
826
+ /** 会话客户端是否已死(补充判断:message 未命中但客户端确实断了,也应重连重试)。
827
+ * 会话不存在或已被显式断开 → 返回 false(不该自动重连)。 */
828
+ function isSessionClosed(sessionId) {
829
+ const s = sessions.get(sessionId);
830
+ if (!s || !s.connected)
831
+ return false;
832
+ return s.client.isClosed || s.client.state === s.client.states.LOGOUT;
833
+ }
788
834
  /** 给 Promise 加超时,避免死连接上无限挂起 */
789
835
  function withTimeout(p, ms, label) {
790
836
  return new Promise((resolve, reject) => {
@@ -836,7 +882,7 @@ async function fetchAttachment(sessionId, uid, partId) {
836
882
  }
837
883
  }
838
884
  async function fetchAllAttachments(sessionId, uid) {
839
- const s = getSession(sessionId);
885
+ const s = await ensureSession(sessionId);
840
886
  // 确保已选中 mailbox(download() 依赖 this.mailbox,未选中会静默返回 {})
841
887
  const mailbox = s.currentMailbox ?? 'INBOX';
842
888
  if (!s.client.mailbox || s.client.mailbox.path !== mailbox) {
@@ -965,7 +1011,7 @@ function stopIdle(sessionId) {
965
1011
  }
966
1012
  // ─── Quota ─────────────────────────────────────────────────
967
1013
  async function getQuota(sessionId, root) {
968
- const s = getSession(sessionId);
1014
+ const s = await ensureSession(sessionId);
969
1015
  const quota = await s.client.getQuota(root);
970
1016
  if (!quota) {
971
1017
  return {
@@ -986,7 +1032,7 @@ async function getQuota(sessionId, root) {
986
1032
  }
987
1033
  // ─── Append ───────────────────────────────────────────────
988
1034
  async function appendMessage(sessionId, mailbox, rawMimeData, flags) {
989
- const s = getSession(sessionId);
1035
+ const s = await ensureSession(sessionId);
990
1036
  const content = Buffer.from(rawMimeData, 'base64');
991
1037
  // APPENDLIMIT(RFC 7889):服务器接受的最大单封邮件字节数。
992
1038
  // imapflow 已把它解析成数字;未通告时返回 boolean|undefined → 跳过检查。
@@ -1 +1 @@
1
- {"version":3,"file":"imapHandler.js","sourceRoot":"","sources":["../src/imapHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imapHandler.js","sourceRoot":"","sources":["../src/imapHandler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkHA,OAAO,OAAO,MAAM,SAAS,CAAC;AAO9B,QAAA,MAAM,GAAG,EAAE,OAAO,CAAC,OAAmB,CAAC;AACvC,QAAA,MAAM,MAAM,mHAAoB,CAAC;AA0djC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,wBAAsB,WAAW,CAC/B,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,CAAC,CAuBvB;AAQD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkHA,OAAO,OAAO,MAAM,SAAS,CAAC;AAO9B,QAAA,MAAM,GAAG,EAAE,OAAO,CAAC,OAAmB,CAAC;AACvC,QAAA,MAAM,MAAM,mHAAoB,CAAC;AA4fjC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAED,wBAAsB,WAAW,CAC/B,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,CAAC,CAuBvB;AAQD,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC"}
@@ -222,6 +222,21 @@ app.use((req, _res, next) => {
222
222
  // ══════════════════════════════════════════════════════════════
223
223
  // IMAP Routes
224
224
  // ══════════════════════════════════════════════════════════════
225
+ // ─── 带静默重连的 IMAP 读操作包装 ─────────────────────────
226
+ /** 连接类错误 → 静默重连(fn 内部 ensureSession 会自动重连)→ 同参数重试一次。
227
+ * 只用于读操作;写操作不自动重试(避免断线重试造成重复执行)。 */
228
+ async function withImapReconnect(sessionId, fn) {
229
+ try {
230
+ return await fn();
231
+ }
232
+ catch (err) {
233
+ if (imap.isConnectionError(err) || imap.isSessionClosed(sessionId)) {
234
+ console.log('[imap] connection error, auto-reconnect & retry:', err?.message);
235
+ return await fn(); // 只重试一次;再失败则向上抛
236
+ }
237
+ throw err;
238
+ }
239
+ }
225
240
  // ─── 连接 ─────────────────────────────────────────────────
226
241
  app.post('/api/imap/connect', async (req, res) => {
227
242
  try {
@@ -244,7 +259,7 @@ app.post('/api/imap/disconnect', async (req, res) => {
244
259
  // ─── 邮箱/文件夹 ──────────────────────────────────────────
245
260
  app.post('/api/imap/listMailboxes', async (req, res) => {
246
261
  try {
247
- const result = await imap.listMailboxes(req.body.sessionId);
262
+ const result = await withImapReconnect(req.body.sessionId, () => imap.listMailboxes(req.body.sessionId));
248
263
  res.json(result);
249
264
  }
250
265
  catch (err) {
@@ -253,7 +268,7 @@ app.post('/api/imap/listMailboxes', async (req, res) => {
253
268
  });
254
269
  app.post('/api/imap/selectMailbox', async (req, res) => {
255
270
  try {
256
- const result = await imap.selectMailbox(req.body.sessionId, req.body.mailbox, req.body.readOnly ?? false);
271
+ const result = await withImapReconnect(req.body.sessionId, () => imap.selectMailbox(req.body.sessionId, req.body.mailbox, req.body.readOnly ?? false));
257
272
  res.json(result);
258
273
  }
259
274
  catch (err) {
@@ -262,7 +277,7 @@ app.post('/api/imap/selectMailbox', async (req, res) => {
262
277
  });
263
278
  app.post('/api/imap/refreshMailbox', async (req, res) => {
264
279
  try {
265
- const result = await imap.refreshMailbox(req.body.sessionId);
280
+ const result = await withImapReconnect(req.body.sessionId, () => imap.refreshMailbox(req.body.sessionId));
266
281
  res.json(result);
267
282
  }
268
283
  catch (err) {
@@ -271,7 +286,7 @@ app.post('/api/imap/refreshMailbox', async (req, res) => {
271
286
  });
272
287
  app.post('/api/imap/fetchFolders', async (req, res) => {
273
288
  try {
274
- const result = await imap.fetchFolders(req.body.sessionId);
289
+ const result = await withImapReconnect(req.body.sessionId, () => imap.fetchFolders(req.body.sessionId));
275
290
  res.json(result);
276
291
  }
277
292
  catch (err) {
@@ -326,7 +341,7 @@ app.post('/api/imap/unsubscribeFolder', async (req, res) => {
326
341
  // ─── 获取邮件 ─────────────────────────────────────────────
327
342
  app.post('/api/imap/fetchEmails', async (req, res) => {
328
343
  try {
329
- const result = await imap.fetchEmails(req.body.sessionId, req.body.options);
344
+ const result = await withImapReconnect(req.body.sessionId, () => imap.fetchEmails(req.body.sessionId, req.body.options));
330
345
  res.json(result);
331
346
  }
332
347
  catch (err) {
@@ -335,7 +350,7 @@ app.post('/api/imap/fetchEmails', async (req, res) => {
335
350
  });
336
351
  app.post('/api/imap/fetchEmailByUID', async (req, res) => {
337
352
  try {
338
- const result = await imap.fetchEmailByUID(req.body.sessionId, req.body.uid);
353
+ const result = await withImapReconnect(req.body.sessionId, () => imap.fetchEmailByUID(req.body.sessionId, req.body.uid));
339
354
  res.json(result);
340
355
  }
341
356
  catch (err) {
@@ -344,7 +359,7 @@ app.post('/api/imap/fetchEmailByUID', async (req, res) => {
344
359
  });
345
360
  app.post('/api/imap/searchEmails', async (req, res) => {
346
361
  try {
347
- const result = await imap.searchEmails(req.body.sessionId, req.body.criteria);
362
+ const result = await withImapReconnect(req.body.sessionId, () => imap.searchEmails(req.body.sessionId, req.body.criteria));
348
363
  res.json(result);
349
364
  }
350
365
  catch (err) {
@@ -418,7 +433,7 @@ app.post('/api/imap/fetchAttachment', async (req, res) => {
418
433
  });
419
434
  app.post('/api/imap/fetchAllAttachments', async (req, res) => {
420
435
  try {
421
- const result = await imap.fetchAllAttachments(req.body.sessionId, req.body.uid);
436
+ const result = await withImapReconnect(req.body.sessionId, () => imap.fetchAllAttachments(req.body.sessionId, req.body.uid));
422
437
  res.json(result);
423
438
  }
424
439
  catch (err) {
@@ -450,7 +465,7 @@ app.post('/api/imap/stopIdle', async (req, res) => {
450
465
  // ─── Quota & Append ───────────────────────────────────────
451
466
  app.post('/api/imap/getQuota', async (req, res) => {
452
467
  try {
453
- const result = await imap.getQuota(req.body.sessionId, req.body.root);
468
+ const result = await withImapReconnect(req.body.sessionId, () => imap.getQuota(req.body.sessionId, req.body.root));
454
469
  res.json(result);
455
470
  }
456
471
  catch (err) {