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
|
||||
imap.searchAsync(['ALL'], {
|
||||
bodies: ['HEADER', 'TEXT'],
|
||||
struct: true,
|
||||
byUid: true,
|
||||
start,
|
||||
end
|
||||
}).then((messages) => {
|
||||
if (!messages || messages.length === 0) {
|
||||
imap.search(['ALL'], (err, results) => {
|
||||
if (err) {
|
||||
console.error(`Error searching in ${folder}:`, err);
|
||||
clearTimeout(timeout);
|
||||
imap.end();
|
||||
resolve(NextResponse.json({ emails: [], error: `Failed to search in ${folder}` }));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!results || results.length === 0) {
|
||||
clearTimeout(timeout);
|
||||
imap.end();
|
||||
resolve(NextResponse.json({
|
||||
@ -198,8 +200,16 @@ export async function GET(request: Request) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Process messages
|
||||
const emails = messages.map((msg) => {
|
||||
// Take only the most recent emails up to the limit
|
||||
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 text = '';
|
||||
let messageId: number | null = null;
|
||||
@ -241,25 +251,29 @@ export async function GET(request: Request) {
|
||||
folder: folder,
|
||||
flags: messageFlags
|
||||
};
|
||||
return email;
|
||||
emails.push(email);
|
||||
});
|
||||
});
|
||||
|
||||
// Sort emails by date (most recent first)
|
||||
emails.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
|
||||
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}` }));
|
||||
});
|
||||
|
||||
clearTimeout(timeout);
|
||||
imap.end();
|
||||
resolve(NextResponse.json({
|
||||
emails,
|
||||
folders: availableMailboxes,
|
||||
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}` }));
|
||||
fetch.on('end', () => {
|
||||
// Sort emails by date (most recent first)
|
||||
emails.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
|
||||
|
||||
clearTimeout(timeout);
|
||||
imap.end();
|
||||
resolve(NextResponse.json({
|
||||
emails,
|
||||
folders: availableMailboxes,
|
||||
mailUrl: process.env.NEXT_PUBLIC_IFRAME_MAIL_URL
|
||||
}));
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user