Специальные символы темы письма Aol отображаются неправильно

Для отправки пожеланий для такого события, как День административных специалистов®, я пытаюсь отправить почту всем почтовым провайдерам своим пользователям, и получатели правильно получают тему электронной почты, кроме почтовых провайдеров AOL, специальные символы (знак регистрации), которые мы видим здесь плохо визуализируется. Я использую перл. Часть кодов выглядит следующим образом.

my $email_subject = _decode_html_entities($q->param('email_subject'));
my $email_msg = MIME::Lite->new(
            From     => '$frm',
            To       => $email_to,
            Subject  => '=?utf-8?B?'.encode_base64($email_subject).'?=',
            Type     => 'text/plain',
            Encoding => 'base64',
            Data     => $email_body
        );
        $email_msg->attr("content-type.charset"   => 'UTF8');
        $email_msg->add( 'X-Card-Nos' => $uc );
        $email_msg->add( 'X-Type'     => 'Test_YearAfter_Reminder' );
        $email_msg->add( 'Errors-To'  => $error_mail_rec );

sub _decode_html_entities {
    my $str = shift;
    $str =~ s/%([a-f0-9]{2})/chr(hex($1))/egi;
    return encode_utf8($str);
}

Другие провайдеры электронной почты, показывающие тему письма как

Электронные открытки ко Дню административных специалистов

тогда как тема почты aol показывает строку темы как

=?utf-8?B?QWRtaW5pc3RyYXRpdmUgUHJvZmVzc2lvbmFscyBEYXnCriBlY2FyZHM= ?=


person ShyamaKant Mahajan    schedule 20.04.2017    source источник


Ответы (1)


Внесите следующие изменения:

$email_msg->attr("content-type.charset"   => 'UTF-8');

Нет необходимости в EOL по умолчанию "\n":

Subject  => '=?utf-8?B?'.encode_base64($email_subject,'').'?=',

Кроме того, нет необходимости кодировать utf8, если вы используете «использовать utf8» в своем скрипте.

person Pradeep    schedule 20.04.2017