Friday, September 16, 2011

gmail pop imap 受信 (kuroboxから)

送信は先日できたが、こんどは受信。

use Mail::IMAPClient;
use IO::Socket::SSL;

2つのモジュールを入れて、受信できました。 問題があったのはメールのSubjectの部分で、エンコード、デコードしない場合、

=?ISO-2022-JP?B?Base64でエンコードされたSubject?=

になるので、まず、

Base64でエンコードされたSubjectの部分をDecodeして、そのあと ISO-2022-JPからutf8にDecodeすればよい。具体的には
use Encode;
use MIME::Base64;
$subject =~ s/=\?ISO-2022-JP\?B\?([A-Za-z0-9\+\/=]*)\?=/ decode_base64($1)/eg;
print decode("ISO-2022-JP", $subject), "\n"; 

No comments: