Fixes ported from v3.8.5.

This commit is contained in:
mic 2026-02-23 21:55:10 +01:00
parent d95bd37fbf
commit 4f84da4256
2 changed files with 16 additions and 6 deletions

View file

@ -17,7 +17,10 @@
*/
import { prefs_default } from '../options/mzta-options-default.js';
import { getMailHeader } from './mzta-utils.js';
import {
getMailHeader,
sanitizeMailHeaders
} from './mzta-utils.js';
/* ================= PLACEHOLDERS PROPERTIES ========================================
@ -545,7 +548,7 @@ export const placeholdersUtils = {
finalSubs['mail_folder_path'] = placeholdersUtils.failSafePlaceholders(curr_message.folder?.path);
break;
case 'mail_headers':
finalSubs['mail_headers:' + currPH.custom_value] = placeholdersUtils.failSafePlaceholders(await getMailHeader(curr_message, currPH.custom_value));
finalSubs['mail_headers:' + currPH.custom_value] = placeholdersUtils.failSafePlaceholders(sanitizeMailHeaders(await getMailHeader(curr_message, currPH.custom_value)));
break;
case 'selected_text':
finalSubs['selected_text'] = placeholdersUtils.failSafePlaceholders(selection_text);
@ -560,13 +563,13 @@ export const placeholdersUtils = {
finalSubs['mail_html_body_or_selected'] = placeholdersUtils.failSafePlaceholders(selection_html || msg_text?.html);
break;
case 'author':
finalSubs['author'] = placeholdersUtils.failSafePlaceholders(curr_message.author);
finalSubs['author'] = placeholdersUtils.failSafePlaceholders(sanitizeMailHeaders(curr_message.author));
break;
case 'recipients':
finalSubs['recipients'] = placeholdersUtils.failSafePlaceholders(curr_message.recipients?.join(", "));
finalSubs['recipients'] = placeholdersUtils.failSafePlaceholders(sanitizeMailHeaders(curr_message.recipients?.join(", ")));
break;
case 'cc_list':
finalSubs['cc_list'] = placeholdersUtils.failSafePlaceholders(curr_message.ccList?.join(", "));
finalSubs['cc_list'] = placeholdersUtils.failSafePlaceholders(sanitizeMailHeaders(curr_message.ccList?.join(", ")));
break;
case 'junk_score':
finalSubs['junk_score'] = placeholdersUtils.failSafePlaceholders(curr_message.junkScore);

View file

@ -207,7 +207,8 @@ export async function getMailHeader(curr_message, mail_header_id) {
let full_message = await browser.messages.getFull(curr_message.id);
// console.log(">>>>>>>>>>>> getMailHeader full_message: " + JSON.stringify(full_message));
if(full_message.hasOwnProperty("headers") && Object.keys(full_message.headers).some(header => header.toLowerCase() === mail_header_id.toLowerCase())){
mail_header_value = full_message.headers[Object.keys(full_message.headers).find(header => header.toLowerCase() === mail_header_id.toLowerCase())];
const raw_value = full_message.headers[Object.keys(full_message.headers).find(header => header.toLowerCase() === mail_header_id.toLowerCase())];
mail_header_value = Array.isArray(raw_value) ? raw_value.join(", ") : raw_value;
}
// console.log(">>>>>>>>>>>> getMailHeader mail_header_value: " + mail_header_value)
return mail_header_value;
@ -218,6 +219,12 @@ export function sanitizeHtml(input) {
return input.replace(/<(?!br\s*\/?)[^>]+>/gi, '');
}
export function sanitizeMailHeaders(input){
console.log(">>>>>>>>>>>> sanitizeMailHeaders input: " + JSON.stringify(input));
if(!input) return '';
return input.replace(/</g, '&lt;').replace(/>/g, '&gt;');
}
export function stripHtmlKeepLines(htmlString) {
// Replaces <p> tags with a newline at the beginning
// and removes all other HTML tags