Aol邮件主题特殊字符未正确显示

时间:2017-04-20 12:25:29

标签: email encoding special-characters subject aol

为了发送像行政专业日®这样的活动的愿望,我尝试向所有用户发送邮件vai所有邮件提供商,并且接收者正在正确地收到电子邮件主题,除了AOL邮件提供商我们的特殊字符(注册号)看到这里没有得到很好的渲染。我正在使用perl。部分代码如下。

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 =?=

1 个答案:

答案 0 :(得分:1)

进行以下更改:

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

无需默认EOL" \ n":

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

此外,如果您使用&ut;使用utf8'则无需编码为utf8。在你的剧本中。