@agenticmail/api 0.9.18 → 0.9.19
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.
- package/dist/index.js +25 -11
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2673,6 +2673,17 @@ function createMailRoutes(accountManager, config, db, gatewayManager) {
|
|
|
2673
2673
|
next(err);
|
|
2674
2674
|
}
|
|
2675
2675
|
});
|
|
2676
|
+
async function resolveSpamFolder(receiver) {
|
|
2677
|
+
const folders = await receiver.listFolders();
|
|
2678
|
+
const junkRe = /^junk\b|^junk mail\b|^spam\b/i;
|
|
2679
|
+
const found = folders.find((f) => f.specialUse === "\\Junk")?.path ?? folders.find((f) => junkRe.test(f.name) || junkRe.test(f.path))?.path;
|
|
2680
|
+
if (found) return found;
|
|
2681
|
+
try {
|
|
2682
|
+
await receiver.createFolder("Junk Mail");
|
|
2683
|
+
} catch {
|
|
2684
|
+
}
|
|
2685
|
+
return "Junk Mail";
|
|
2686
|
+
}
|
|
2676
2687
|
router.get("/mail/spam", requireAgent, async (req, res, next) => {
|
|
2677
2688
|
try {
|
|
2678
2689
|
const agent = req.agent;
|
|
@@ -2680,15 +2691,16 @@ function createMailRoutes(accountManager, config, db, gatewayManager) {
|
|
|
2680
2691
|
const offset = Math.max(parseInt(req.query.offset) || 0, 0);
|
|
2681
2692
|
const password = getAgentPassword(agent);
|
|
2682
2693
|
const receiver = await getReceiver(agent.stalwartPrincipal, password, config);
|
|
2694
|
+
const spamFolder = await resolveSpamFolder(receiver);
|
|
2683
2695
|
let mailboxInfo;
|
|
2684
2696
|
try {
|
|
2685
|
-
mailboxInfo = await receiver.getMailboxInfo(
|
|
2697
|
+
mailboxInfo = await receiver.getMailboxInfo(spamFolder);
|
|
2686
2698
|
} catch {
|
|
2687
|
-
res.json({ messages: [], count: 0, total: 0, folder:
|
|
2699
|
+
res.json({ messages: [], count: 0, total: 0, folder: spamFolder });
|
|
2688
2700
|
return;
|
|
2689
2701
|
}
|
|
2690
|
-
const envelopes = await receiver.listEnvelopes(
|
|
2691
|
-
res.json({ messages: envelopes, count: envelopes.length, total: mailboxInfo.exists, folder:
|
|
2702
|
+
const envelopes = await receiver.listEnvelopes(spamFolder, { limit, offset });
|
|
2703
|
+
res.json({ messages: envelopes, count: envelopes.length, total: mailboxInfo.exists, folder: spamFolder });
|
|
2692
2704
|
} catch (err) {
|
|
2693
2705
|
next(err);
|
|
2694
2706
|
}
|
|
@@ -2793,12 +2805,13 @@ function createMailRoutes(accountManager, config, db, gatewayManager) {
|
|
|
2793
2805
|
const folder = req.body?.folder || "INBOX";
|
|
2794
2806
|
const password = getAgentPassword(agent);
|
|
2795
2807
|
const receiver = await getReceiver(agent.stalwartPrincipal, password, config);
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2808
|
+
const spamFolder = await resolveSpamFolder(receiver);
|
|
2809
|
+
if (spamFolder === folder) {
|
|
2810
|
+
res.status(400).json({ error: "Message already in spam" });
|
|
2811
|
+
return;
|
|
2799
2812
|
}
|
|
2800
|
-
await receiver.moveMessage(uid, folder,
|
|
2801
|
-
res.json({ ok: true, movedToSpam: true });
|
|
2813
|
+
await receiver.moveMessage(uid, folder, spamFolder);
|
|
2814
|
+
res.json({ ok: true, movedToSpam: true, spam: spamFolder });
|
|
2802
2815
|
} catch (err) {
|
|
2803
2816
|
next(err);
|
|
2804
2817
|
}
|
|
@@ -2813,8 +2826,9 @@ function createMailRoutes(accountManager, config, db, gatewayManager) {
|
|
|
2813
2826
|
}
|
|
2814
2827
|
const password = getAgentPassword(agent);
|
|
2815
2828
|
const receiver = await getReceiver(agent.stalwartPrincipal, password, config);
|
|
2816
|
-
await receiver
|
|
2817
|
-
|
|
2829
|
+
const spamFolder = await resolveSpamFolder(receiver);
|
|
2830
|
+
await receiver.moveMessage(uid, spamFolder, "INBOX");
|
|
2831
|
+
res.json({ ok: true, movedToInbox: true, spam: spamFolder });
|
|
2818
2832
|
} catch (err) {
|
|
2819
2833
|
next(err);
|
|
2820
2834
|
}
|