we need to mime decode the subject after reading it, so that we get
the 'real' subject instead of the (possibly) mime encoded one (which
might be base64 or quoted-printable encoded). To get a proper subject in
the notification mail again, we have to encode it again before passing
it MIME::Entity->build
Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-By: Stoiko Ivanov <s.ivanov@proxmox.com>
Reviewed-By: Stoiko Ivanov <s.ivanov@proxmox.com>
use MIME::Body;
use MIME::Head;
use MIME::Entity;
+use MIME::Words qw(encode_mimewords);
use Encode qw(decode encode);
use PVE::SafeSyslog;
Charset => 'UTF-8',
From => $from,
To => $to,
- Subject => encode('UTF-8', $subject),
+ Subject => encode_mimewords(encode('UTF-8', $subject), "Charset" => "UTF-8"),
Data => encode('UTF-8', $body));
if ($self->{attach} eq 'O') {
use POSIX qw(:sys_wait_h errno_h signal_h);
use MIME::Parser;
+use MIME::WordDecoder qw(mime_to_perl_string);
use File::Path;
use Net::Server::PreFork;
use Net::Server::SIG qw(register_sig check_sigs);
} if !$spaminfo;
my $vars = {
- 'SUBJECT' => $entity->head->get ('subject', 0) || 'No Subject',
+ 'SUBJECT' => mime_to_perl_string($entity->head->get ('subject', 0) || 'No Subject'),
'RULE' => $rule->{name},
'RULE_INFO' => $msginfo->{rule_info},
'SENDER' => $msginfo->{sender},