Neah version mail stable 1
This commit is contained in:
parent
5fd06cad00
commit
12317a0ff6
@ -180,14 +180,16 @@ export async function GET(request: Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Fetch messages in the calculated range
|
// Fetch messages in the calculated range
|
||||||
imap.searchAsync(['ALL'], {
|
imap.search(['ALL'], (err, results) => {
|
||||||
bodies: ['HEADER', 'TEXT'],
|
if (err) {
|
||||||
struct: true,
|
console.error(`Error searching in ${folder}:`, err);
|
||||||
byUid: true,
|
clearTimeout(timeout);
|
||||||
start,
|
imap.end();
|
||||||
end
|
resolve(NextResponse.json({ emails: [], error: `Failed to search in ${folder}` }));
|
||||||
}).then((messages) => {
|
return;
|
||||||
if (!messages || messages.length === 0) {
|
}
|
||||||
|
|
||||||
|
if (!results || results.length === 0) {
|
||||||
clearTimeout(timeout);
|
clearTimeout(timeout);
|
||||||
imap.end();
|
imap.end();
|
||||||
resolve(NextResponse.json({
|
resolve(NextResponse.json({
|
||||||
@ -198,8 +200,16 @@ export async function GET(request: Request) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process messages
|
// Take only the most recent emails up to the limit
|
||||||
const emails = messages.map((msg) => {
|
const recentResults = results.slice(-limit);
|
||||||
|
const emails: any[] = [];
|
||||||
|
|
||||||
|
const fetch = imap.fetch(recentResults, {
|
||||||
|
bodies: ['HEADER', 'TEXT'],
|
||||||
|
struct: true
|
||||||
|
});
|
||||||
|
|
||||||
|
fetch.on('message', (msg) => {
|
||||||
let header = '';
|
let header = '';
|
||||||
let text = '';
|
let text = '';
|
||||||
let messageId: number | null = null;
|
let messageId: number | null = null;
|
||||||
@ -241,10 +251,18 @@ export async function GET(request: Request) {
|
|||||||
folder: folder,
|
folder: folder,
|
||||||
flags: messageFlags
|
flags: messageFlags
|
||||||
};
|
};
|
||||||
return email;
|
emails.push(email);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
fetch.on('error', (err) => {
|
||||||
|
console.error(`Error fetching emails from ${folder}:`, err);
|
||||||
|
clearTimeout(timeout);
|
||||||
|
imap.end();
|
||||||
|
resolve(NextResponse.json({ emails: [], error: `Failed to fetch emails from ${folder}` }));
|
||||||
|
});
|
||||||
|
|
||||||
|
fetch.on('end', () => {
|
||||||
// Sort emails by date (most recent first)
|
// Sort emails by date (most recent first)
|
||||||
emails.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
|
emails.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
|
||||||
|
|
||||||
@ -255,11 +273,7 @@ export async function GET(request: Request) {
|
|||||||
folders: availableMailboxes,
|
folders: availableMailboxes,
|
||||||
mailUrl: process.env.NEXT_PUBLIC_IFRAME_MAIL_URL
|
mailUrl: process.env.NEXT_PUBLIC_IFRAME_MAIL_URL
|
||||||
}));
|
}));
|
||||||
}).catch((err) => {
|
});
|
||||||
console.error(`Error fetching emails from ${folder}:`, err);
|
|
||||||
clearTimeout(timeout);
|
|
||||||
imap.end();
|
|
||||||
resolve(NextResponse.json({ emails: [], error: `Failed to fetch emails from ${folder}` }));
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user