mail page imap connection mime 5 bis rest 16 login page 19
This commit is contained in:
parent
925e321759
commit
2fdebf82e1
@ -71,6 +71,12 @@ function getStoredCredentials(): StoredCredentials | null {
|
||||
password: '***'
|
||||
});
|
||||
|
||||
// Validate required fields
|
||||
if (!credentials.email || !credentials.password || !credentials.host || !credentials.port) {
|
||||
console.error('Missing required credentials fields');
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
email: credentials.email,
|
||||
password: credentials.password,
|
||||
|
||||
@ -56,17 +56,23 @@ export default function LoginPage() {
|
||||
password: '***'
|
||||
});
|
||||
|
||||
// Store as a single cookie
|
||||
// Store as a single cookie with proper options
|
||||
setCookie('imap_credentials', JSON.stringify(credentials), {
|
||||
maxAge: 60 * 60 * 24, // 1 day
|
||||
path: '/',
|
||||
sameSite: 'lax'
|
||||
sameSite: 'lax',
|
||||
secure: process.env.NODE_ENV === 'production',
|
||||
httpOnly: false // Allow access from JavaScript
|
||||
});
|
||||
|
||||
// Verify cookie was set
|
||||
const stored = document.cookie.split(';').find(c => c.trim().startsWith('imap_credentials='));
|
||||
console.log('Cookie verification:', stored ? 'Cookie found' : 'Cookie not found');
|
||||
|
||||
if (!stored) {
|
||||
throw new Error('Failed to store credentials');
|
||||
}
|
||||
|
||||
// Redirect to mail page
|
||||
router.push('/mail');
|
||||
} catch (err) {
|
||||
|
||||
@ -430,63 +430,37 @@ export default function MailPage() {
|
||||
|
||||
// Fetch emails from IMAP API
|
||||
const loadEmails = async () => {
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
try {
|
||||
console.log('Starting to load emails...');
|
||||
setLoading(true);
|
||||
setError(null);
|
||||
|
||||
const response = await fetch('/api/mail');
|
||||
console.log('API response status:', response.status);
|
||||
|
||||
if (!response.ok) {
|
||||
const errorData = await response.json();
|
||||
if (errorData.error === 'Invalid login or password') {
|
||||
// Clear invalid credentials and redirect to login
|
||||
localStorage.removeItem('imapCredentials');
|
||||
router.push('/mail/login');
|
||||
return;
|
||||
}
|
||||
throw new Error(errorData.details || 'Failed to fetch emails');
|
||||
console.error('API error:', errorData);
|
||||
throw new Error(errorData.error || 'Failed to load emails');
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
console.log('API Response:', data); // Debug log
|
||||
console.log('Received emails:', data.length);
|
||||
|
||||
// Handle different possible response formats
|
||||
let emailData = [];
|
||||
if (Array.isArray(data)) {
|
||||
emailData = data;
|
||||
} else if (data && typeof data === 'object') {
|
||||
// If data is an object, try to extract emails from it
|
||||
if (data.emails) {
|
||||
emailData = data.emails;
|
||||
} else if (data.messages) {
|
||||
emailData = data.messages;
|
||||
} else {
|
||||
// Try to convert object values to array
|
||||
emailData = Object.values(data);
|
||||
}
|
||||
}
|
||||
|
||||
console.log('Processed email data:', emailData); // Debug log
|
||||
|
||||
// Ensure all dates are Date objects and add required properties
|
||||
const processedEmails = emailData.map((email: any) => ({
|
||||
id: email.id || email.uid || email.messageId || Math.random().toString(),
|
||||
accountId: email.accountId || '1',
|
||||
from: email.from || '',
|
||||
fromName: email.fromName || email.from?.split('@')[0] || '',
|
||||
to: email.to || '',
|
||||
subject: email.subject || '(No Subject)',
|
||||
body: email.body || email.text || email.html || '',
|
||||
preview: email.preview || email.body?.substring(0, 100) || '',
|
||||
category: email.category || 'inbox',
|
||||
date: email.date ? new Date(email.date) : new Date(),
|
||||
// Ensure all dates are Date objects
|
||||
const processedEmails = data.map((email: Email) => ({
|
||||
...email,
|
||||
date: new Date(email.date),
|
||||
read: email.read || false,
|
||||
starred: email.starred || false
|
||||
starred: email.starred || false,
|
||||
category: email.category || 'inbox'
|
||||
}));
|
||||
|
||||
console.log('Final processed emails:', processedEmails); // Debug log
|
||||
setEmails(processedEmails);
|
||||
console.log('Emails loaded successfully');
|
||||
} catch (err) {
|
||||
console.error('Error fetching emails:', err);
|
||||
setError(err instanceof Error ? err.message : 'An error occurred');
|
||||
setEmails([]);
|
||||
console.error('Error loading emails:', err);
|
||||
setError(err instanceof Error ? err.message : 'Failed to load emails');
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user