courrier multi account restore compose

This commit is contained in:
alma 2025-04-28 21:10:05 +02:00
parent 38d11a5dfd
commit 7963852af6
2 changed files with 33 additions and 12 deletions

View File

@ -17,24 +17,31 @@ export function formatEmailContent(email: any): string {
// Get the content in order of preference // Get the content in order of preference
let content = ''; let content = '';
if (email.formattedContent) { if (email.content && typeof email.content === 'object') {
console.log('formatEmailContent: Using formattedContent'); console.log('formatEmailContent: Using object content:', email.content);
content = email.formattedContent; content = email.content.html || email.content.text || '';
} else if (typeof email.content === 'string') { } else if (typeof email.content === 'string') {
console.log('formatEmailContent: Using direct string content'); console.log('formatEmailContent: Using direct string content');
content = email.content; content = email.content;
} else if (email.content && typeof email.content === 'object') { } else if (email.html) {
console.log('formatEmailContent: Using object content:', email.content); console.log('formatEmailContent: Using html content');
content = email.content.html || email.content.text || ''; content = email.html;
} else { } else if (email.text) {
console.log('formatEmailContent: Using fallback content'); console.log('formatEmailContent: Using text content');
content = email.html || email.text || ''; content = email.text;
} else if (email.formattedContent) {
console.log('formatEmailContent: Using formattedContent');
content = email.formattedContent;
} }
console.log('formatEmailContent: Content before sanitization:', content); console.log('formatEmailContent: Content before sanitization:', content);
// Sanitize the content for display // Sanitize the content for display while preserving formatting
const sanitizedContent = DOMPurify.sanitize(content); const sanitizedContent = DOMPurify.sanitize(content, {
ADD_TAGS: ['style'],
ADD_ATTR: ['class', 'style', 'dir'],
ALLOW_DATA_ATTR: false
});
console.log('formatEmailContent: Final sanitized content:', sanitizedContent); console.log('formatEmailContent: Final sanitized content:', sanitizedContent);

View File

@ -94,6 +94,11 @@ export interface EmailMessage {
contentFetched?: boolean; contentFetched?: boolean;
} }
interface EmailContent {
html?: string;
text?: string;
}
/** /**
* Format email addresses for display * Format email addresses for display
*/ */
@ -258,7 +263,16 @@ export function formatReplyEmail(email: EmailMessage, type: 'reply' | 'reply-all
const quoteHeader = `<div style="font-weight: 400; color: #555; margin: 20px 0 8px 0; font-size: 13px;">On ${formattedDate}, ${fromText} wrote:</div>`; const quoteHeader = `<div style="font-weight: 400; color: #555; margin: 20px 0 8px 0; font-size: 13px;">On ${formattedDate}, ${fromText} wrote:</div>`;
// Get and sanitize original content (sanitization preserves content direction) // Get and sanitize original content (sanitization preserves content direction)
const originalContent = email.html || email.content || email.text || ''; let originalContent = '';
if (email.content && typeof email.content === 'object') {
const contentObj = email.content as EmailContent;
originalContent = contentObj.html || contentObj.text || '';
} else if (typeof email.content === 'string') {
originalContent = email.content;
} else {
originalContent = email.html || email.text || '';
}
const quotedContent = sanitizeHtml(originalContent); const quotedContent = sanitizeHtml(originalContent);
// Format recipients // Format recipients