Skip to content
Snippets Groups Projects
Commit 0e8e1ae7 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Create/use mimehdr encode() method for MIME/Q-encoding UTF-8 header fields

Use it in newsutil get_news_subject() when no original (RFC822)
Subject header field exists.

This should fix issue #817.
parent cee11a4e
No related branches found
No related tags found
No related merge requests found
Pipeline #7299 passed
......@@ -66,4 +66,39 @@ function to_cp437(val)
return result.join('');
}
this;
\ No newline at end of file
function encode_word(word)
{
var output = "=?utf-8?q?";
for(var i in word) {
var ch = word[i];
if(ascii(ch) < 0x80 && ch != '=')
output += ch;
else
output += format("=%02X", ascii(ch));
}
return output + "?=";
}
function encode(val)
{
if(str_is_ascii(val))
return val;
var output = '';
var words = val.split(/\s+/g);
for(var i in words) {
if(output.length)
output += " ";
var word = words[i];
if(str_is_ascii(word)) {
output += word;
continue;
}
if(!str_is_utf8(word))
word = utf8_encode(word);
output += encode_word(word);
}
return output;
}
this;
......@@ -4,6 +4,8 @@
require("mailutil.js", 'mail_get_name');
require("smbdefs.js", 'RFC822HEADER');
const mimehdr = load("mimehdr.js");
function get_news_subject(hdr)
{
if(hdr.field_list !== undefined)
......@@ -11,7 +13,7 @@ function get_news_subject(hdr)
if(hdr.field_list[i].type == RFC822SUBJECT)
return hdr.field_list[i].data;
}
return hdr.subject;
return mimehdr.encode(hdr.subject);
}
function get_news_from(hdr)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment