2017-04-20 103 views
2

對於像Administrative ProfessionalsDay®這樣的活動發送意願,我嘗試發送郵件給所有郵件提供者給我的用戶,並且接收者正確地收到電子郵件主題,除了AOL郵件提供者特殊我們在這裏看到的字符(註冊符號)沒有得到很好的呈現。我使用Perl。部分代碼如下。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); 
} 

其他電子郵件提供商表示郵件主題作爲

行政專業人員Day®賀卡

而AOL郵件主題表示主題行

=?UTF-8 2 B 4 QWRtaW5pc3RyYXRpdmUgUHJvZmVzc2lvbmFscyBEYXnCriBlY2FyZHM =?

回答

1

做以下修改:

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

無需默認EOL 「\ n」:

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

另外,如果你在你的腳本中使用 '使用UTF8' 無需編碼爲utf8。