2007-09-14

[UNIX]Mail Header Encoding

一早鈞豪再問,關於 E-Mail Header 的時候,就說,如果 E-mail 的格式有哪些?


  • "名稱" <user@domain>

  • 含有空白的名稱 <user@domain>


如果名稱有不是 ASCII 字元的話,將會需要進行編碼,編碼格式長得類似這樣

=?encoding?B?Base64EncodedMessage?=
=?encoding?Q?QPEncodedMessage?=


在 Perl 裡,有個很好用的 Module 叫做 Encode,他可以自己幫你處理,Encode 以及 MIME 編碼的問題,真是不錯~


摘要一下他的內容:



























Parameter Onedecode()encode()
"MIME-Header"Both B and Q=?UTF-8?B?....?=
MIME-BB only; Q croaks=?UTF-8?B?....?=
MIME-QQ only; B croaks=?UTF-8?Q?....?=

程式碼:


#! /usr/bin/perl

use Encode;

my $str = "測試中文字";

my $encenc = encode("MIME-Header", $str) . "\n";
my $encencB = encode("MIME-B", $str) . "\n";
my $encencQ = encode("MIME-Q", $str) . "\n";

print $encenc . $encencB . $encencQ ;



執行結果:


=?UTF-8?B?w6bCuMKsw6jCqcKmw6TCuMKtw6bClsKHw6XCrcKX?=
=?UTF-8?B?w6bCuMKsw6jCqcKmw6TCuMKtw6bClsKHw6XCrcKX?=
=?UTF-8?Q?=E6=B8=AC=E8=A9=A6=E4=B8=AD=E6=96=87=E5=AD=97?=

沒有留言: